質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

例外処理

例外処理(Exception handling)とは、プログラム実行中に異常が発生した場合、通常フローから外れ、例外として別の処理を行うようにデザインされたプログラミング言語構造です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

0回答

505閲覧

VBAでseleniumを使ってのスクレイピングで、例外処理で躓いています。

ama178

総合スコア9

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

例外処理

例外処理(Exception handling)とは、プログラム実行中に異常が発生した場合、通常フローから外れ、例外として別の処理を行うようにデザインされたプログラミング言語構造です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2022/09/13 12:14

前提

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2022/09/13 12:18

> VBAでseleniumを使用してアマゾンの商品ページから価格のスクレイピングをするプログラムを作成しています。 利用規約ではそのような行為は禁止行為となっていますがご存じでしょうか?
ama178

2022/09/13 16:15 編集

そうなのですね・・・ 初めて知りました。 追加で質問させてください。 Amazonが提供しているAPIを導入する方法であれば、規約に違反せずに価格などの情報を引っ張ってこられるようですが、このやり方であれば問題ないのでしょうか? また、Octpauseというスクレイピングツールがアマゾンに対応しているようですが、市販のツールはアマゾンの許可を得て提供されているものなのでしょうか?
meg_

2022/09/13 16:37

> Amazonが提供しているAPI > 価格などの情報を引っ張ってこられるよう Product Advertising API のことでしょうか?https://affiliate.amazon.co.jp/help/operating/paapilicenseagreement それともセリングパートナーAPIのことでしょうか? https://developer.amazonservices.jp/ いづれにしても契約内容をご確認ください。 > 市販のツールはアマゾンの許可を得て提供されているものなのでしょうか? 販売元に確認なさってください。
ama178

2022/09/13 16:54

セリングパートナーの方でした。 夜分遅くにありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問