seleniumでスクレイピングしています。
検索一覧をループしながらスクレイピングしています。
ループの途中でtimeoutエラーが発生していたためtry-except TimeoutExceptionでスクレイピング箇所を囲みTimeoutExceptionをcatchするようにしました。
1.検索結果の件数取得
2.件数分ループ
3.try
4.検索結果全件取得
5.2のインデックスを3にあてる
6.スクレイピング(ループ中の一覧画面から詳細画面に移り詳細画面をスクレイピング後一覧画面に戻る)
7.except TimeoutException
8.ループ終わり
7ではcontinue使ったりpassつかったりしました。
4でどうしてもエラーになってしまいます。
python+selenium
1cnt=検索結果件数 2for idx in range(cnt): 3 try: 4 tbl = driver.find_element_by_id("list") #exceptから戻ってきてここでエラーになります 5 body = tbl.find_element_by_tag_name('tbody') 6 trs=body.find_elements_by_tag_name('tr') 7 #スクレイピング 8 except TimeoutException: 9 #continue 10 pass
太字部分が追記分です。
詳細画面に移ることなく一覧画面だけをスクレイピングする場合timeoutexceptionは起きず、一画面から詳細画面に移ってスクレイピングするのを追加した場合timeoutexceptionが起きるようになりました。
'selenium.common.exceptions.NoSuchElementException'>Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="list"]"
timeoutの解消方法はないのでしょうか。
ちなみにこのtimeoutはサイトログイン後のセッションタイムアウトになるのでしょうか。
できれば、皆さんどのように対応されているのかお聞きしたいです。
よろしくお願いします。
あなたの回答
tips
プレビュー