在https://www.meinfluessiggas.de用户必须点击水箱尺寸按钮(“Behältergröße”部分)并填写邮政编码(“PLZ Behälterstandort”部分),价格才会显示在右侧。我想在bash
脚本中自动执行此操作,但很难检索正确的信息:
wget https://www.meinfluessiggas.de
正确加载页面源,但不包含价格信息。我发现有一些javascript函数可以加载价格信息,所以按照以下方法SU:支持 js 的命令行浏览器我试过
phantomjs save_page.js https://www.meinfluessiggas.de > page.html
它检索包括一些价格信息的源代码,但不幸的是,仅针对最小的水箱尺寸,默认情况下选择该按钮。
假设
tank=2700 # or 1.2, or 12, whatever is the simplest
postal=88448
如何在bash
脚本中从该网站检索价格信息?
答案1
通过仔细检查源代码,我能够确定 javascript 函数获取价格信息的来源:
<div class="options__field options__field--zip select-12">
<label>PLZ <span class="small">Behälterstandort</span></label>
<div class="input-box">
<select name="options[4066]" id="select_4066"
class=" product-custom-option" title="" data-placeholder="Ihre PLZ"
data-url="https://www.meinfluessiggas.de/dfg/index/index/size/1.2/?v=1.1"
data-size="12" data-chosentype="zip" onchange="opConfig.reloadPrice()">
<option value="">Lädt...</option>
</select>
</div>
</div>
这里有趣的部分是:
data-url="https://www.meinfluessiggas.de/dfg/index/index/size/1.2/?v=1.1"
只需使用 即可从该 url 获取价格列表wget
,并结合问题中的变量:
$ tank=1.2
$ postal=88448
$ wget -qO- https://www.meinfluessiggas.de/dfg/index/index/size/$tank | sed 's/.*"\([^"]*\)" >'$postal'.*/\1/'
0.4049
在 URL 中我省略了,/?v=1.1
因为它似乎没有改变任何东西(针对 0.1 到 4.9 进行了测试)。