前提・実現したいこと
Scrapyを使用して、同一サイト内の複数製品ページから、製品仕様テーブルの情報を取得したいです。
ただいくつかの製品ページには製品仕様テーブルが存在しないため、情報を取得できずに処理が止まってしまいます。
製品仕様テーブルが存在しない場合は、処理をスキップして次の製品ページに移って情報取得を行いたいです。
製品仕様のテーブルはJavascriptで作成されているようなので、seleniumを使用しています。
ブラウザはchromiumを使用しています。
発生している問題・エラーメッセージ
find_elements_by_xpath()で指定したxpathが存在しない場合、以下のログが出力されて処理が止まり、先に進みません。
[selenium.webdriver.remote.remote_connection] DEBUG: POST http://127.0.0.1:40227/session/64efb2dfe4357b584f9b3e36b2c4a7c4/elements {"using": "xpath", "value": "//*[@class="product-body"]/div/div[4]/div/div/table/tbody/tr/td[2]/div/p/a"}
該当のソースコード
spec_list = driver.find_elements_by_xpath('//*[@class="product-body"]/div/div[4]/div/div/table/tbody/tr/td[2]/div/p/a')
if 'spec_list' in locals():
for e in range(len(spec_list)):
print(spec_list[e].text)
else:
print("no spec_list")
試したこと
最初は、try: except: を試してみましたが、Scrapyでは使えないのですね。。
補足情報(FW/ツールのバージョンなど)
Scrapy(1.8.0)
selenium(3.141.0)
あなたの回答
tips
プレビュー