存在する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"
wget
質問の変数と組み合わせたURLから価格リストを取得するために使用します。
$ tank=1.2
$ postal=88448
$ wget -qO- https://www.meinfluessiggas.de/dfg/index/index/size/$tank | sed 's/.*"\([^"]*\)" >'$postal'.*/\1/'
0.4049
/?v=1.1
URLでは何も変更されていないため、省略しました(0.1から4.9までテスト済み)。