【VBS】IEで楽天のページをスクレイピングし在庫確認後、LINE通知するプログラム
ニンテンドースイッチ等人気の商品を買おうと思っても現在品薄状態で、基本在庫なしの状態です。
もし在庫が復活してもすぐ売り切れてしまいます。
在庫を定期的にチェックする方法があればいいなと思い、
SEパワー全開でVBSで楽天の商品ページをスクレイピングするプログラムをサクッと作ってみました。
VBの知識が少しあれば理解できると思います。
※このプログラムによる不具合や損失は一切責任を負いませんので、あくまで自己責任でお願いします。
VBSプログラムを先にどうぞ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
Dim objIE Dim Cnt Dim URL 'オブジェクトの作成 Set objIE = CreateObject("InternetExplorer.Application") 'IEを表示させる。Trueで表示 objIE.Visible = False URL = "https://books.rakuten.co.jp/rb/16033028/?bkts=1&l-id=search-c-item-text-06" '指定したURLを開く objIE.Navigate2 URL 'ページが読み込まれるまで待つ Do While objIE.Busy = True Or objIE.readyState <> 4 WScript.Sleep 100 Loop Dim objtag Dim objFrame Set objFrame = objIE.document '買い物かごに入れるボタン探す For Each objTag In objFrame.getElementsByTagName("button") If Instr(objTag.outerHTML,"買い物かごに入れる") > 0 Then cnt = 1 Exit For Else cnt = 0 End If Next '買い物かごに入れるボタンがあった場合Line通知 IF cnt = 1 then Dim objHTTP Dim LineStr LineStr = "message=" & URL Set objHTTP = CreateObject("MSXML2.XMLHTTP") objHTTP.Open "POST", "https://notify-api.line.me/api/notify", False objHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" objHTTP.setRequestHeader "Authorization", "Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" 'LINE Notifyのトークン objHTTP.send LineStr End IF objIE.Quit |
LINE Notifyって?
当初メール通知にしようと思ったのですが、メールだとせっかく在庫があっても気付かない、、なんてことがあります。
なのでLINEにしようと思いました。
LINE NotifyとはWebサービスからの通知をLINEに送れる便利機能です。
利用は簡単なのでこちらより登録して、トークンを取得してください。
https://notify-bot.line.me/ja/
使い方
まずは上記のソースコードをテキストエディタへコピペ。
LINE NotifyのトークンをXXXXX・・のところに置き換え。
拡張子vbsで保存(test.vbsとでも名前を付ければOK)
出来上がったファイルを実行すれば在庫があればLINEに通知が行きます。
在庫がなければLINE通知はなしです。
なぜVBSで作ったのか?
Windowsの標準のまま動くので事前準備が不要だからです。
Pythonのほうがスクレイピングは得意分野でしょうけど、今回は思い付きで手を動かしたので、、VBSです。
ここから先は好きにカスタマイズしてください。
このプログラムを複数の商品ページで繰り返し(ループ)処理したり、、
5分毎に自動実行したり、、
LINEじゃなくメールにしたり、Twitt…へ投稿したり、、
プログラミングを楽しんでください。
ディスカッション
コメント一覧
まだ、コメントがありません