前提
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
あなたの回答
tips
プレビュー