前提
VBAでseleniumを使用してアマゾンの商品ページから価格のスクレイピングをするプログラムを作成しています。
エクセルのA列に商品ページのURL一覧がズラーっと並んでいて、それを一つずつ開きます。
価格をコピーしてB列の同じ行にペーストしていきます。
実現したいこと
たまにアマゾンのエラーで価格が表示されない時があります。
そういう時はページの更新をすると正常に表示されるようになります。
この動きをプログラムに組み込みたいです。
例外処理で対処を試みています。
アマゾンの価格の表示がエラーが出る場合と出ない場合で分岐させたいです。
エラーが出た時のみページの更新をするようにさせたいです。
しかしなぜか上手くできません・・・
発生している問題・エラーメッセージ
実行時エラー7 NoSuchElementError Element not found for XPath=//*[@id=""corePrice_feature_div""]/div/span/span[2]
該当のソースコード
VBA
1Sub test() 2 3Dim Driver As New Selenium.WebDriver 4Dim i As Long 5 6SafeOpen Driver, Chrome 7 8With ThisWorkbook.Worksheets("test") 9For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row 10 Driver.Get .Range("A2").Offset(i - 1, 0) 11 12 On Error GoTo ErrorHandler 13 Driver.FindElementByXPath("//*[@id=""corePrice_feature_div""]/div/span/span[2]").Text 14 15 GoTo Finally 16 17ErrorHandler: 18 Driver.Refresh 19 20Finally: 21 22 Driver.FindElementByXPath("//*[@id=""corePrice_feature_div""]/div/span/span[2]").Text 23 On Error Resume Next 24 DoEvents 25 Worksheets("test").Cells(1 + i, 2) = Driver.FindElementByXPath("//*[@id='corePriceDisplay_desktop_feature_div']/div[1]/span/span[2]/span[2]").Text 26 27Next 28End With 29End Sub 30
試したこと
補足情報(FW/ツールのバージョンなど)
Windows10
> VBAでseleniumを使用してアマゾンの商品ページから価格のスクレイピングをするプログラムを作成しています。
利用規約ではそのような行為は禁止行為となっていますがご存じでしょうか?
そうなのですね・・・
初めて知りました。
追加で質問させてください。
Amazonが提供しているAPIを導入する方法であれば、規約に違反せずに価格などの情報を引っ張ってこられるようですが、このやり方であれば問題ないのでしょうか?
また、Octpauseというスクレイピングツールがアマゾンに対応しているようですが、市販のツールはアマゾンの許可を得て提供されているものなのでしょうか?
> Amazonが提供しているAPI
> 価格などの情報を引っ張ってこられるよう
Product Advertising API のことでしょうか?https://affiliate.amazon.co.jp/help/operating/paapilicenseagreement
それともセリングパートナーAPIのことでしょうか?
https://developer.amazonservices.jp/
いづれにしても契約内容をご確認ください。
> 市販のツールはアマゾンの許可を得て提供されているものなのでしょうか?
販売元に確認なさってください。
セリングパートナーの方でした。
夜分遅くにありがとうございました。
あなたの回答
tips
プレビュー