maxRetryErrorの対策方法につきまして、
その対策方法自体に疑問がありましたので質問させていただきました。
for分を使用したスクレイピングによるmaxRetryErrorを回避する方法として
for分の中にヘッドレスブラウザの設定を組み込んでしまうことで対処できると紹介されておりました。
これはどうしてforの中でその都度ヘッドレスブラウザの設定をすることでmaxRetryErrorを回避することができるのでしょうか。
開発環境は
google colab
Python 3.7.12
一応ですがOSはwindows10です。
以下に詳細を記載させていただきます。
seleniumを使用してスクレイピングをしており
forを使用した繰り返し処理において、目的のwebページに飛ぶ際に上記エラーが生じてしまいました。
以下に簡潔にですがエラーが出た際のサンプルコードを記載いたします。
python
1options = webdriver.ChromeOptions() 2options.add_argument('--headless') 3options.add_argument('--no-sandbox') 4options.add_argument('--disable-dev-shm-usage') 5browser = webdriver.Chrome('chromedriver', options = options) 6 7keyword_list = [asd, adis, agau, aksia, siaug, sksi, aisia] 8url1 = 'https://*******' 9url2 = 'https://+++++++' 10 11for i in range(len(keyword_list)): 12 browser.get(url1) 13 input_box1 = browser.find_element(by = By.NAME, value = 'input1') 14 input_box1.send_keys = keyword_list[i] 15 # 以下url1におけるhtml取得などの処理 16 17 browser.get(url2) 18 input_box2 = browser.find_element(by = By.NAME, value = 'input2') 19 input_box2.send_keys = keyword_list[i] 20 # 以下url2におけるhtml取得などの処理
上記のコードで最初の
browser.get(url1)
の部分でmaxRetryErrorとなってしまいました。
ネットで解決策を探してみましたところ以下サイトに対処方法が乗っておりその通りにすることでエラーの対処は自体はできました。
https://qiita.com/S8s8Max/items/035742cf061419d827c6
対処方法のサイトを参考にしまして修正した私のコードが以下でございます。
python
1keyword_list = [asd, adis, agau, aksia, siaug, sksi, aisia] 2url1 = 'https://*******' 3url2 = 'https://+++++++' 4 5for i in range(len(keyword_list)): 6 options = webdriver.ChromeOptions() 7 options.add_argument('--headless') 8 options.add_argument('--no-sandbox') 9 options.add_argument('--disable-dev-shm-usage') 10 browser = webdriver.Chrome('chromedriver', options = options) 11 12 browser.get(url1) 13 input_box1 = browser.find_element(by = By.NAME, value = 'input1') 14 input_box1.send_keys = keyword_list[i] 15 # 以下url1におけるhtml取得などの処理 16 17 browser.get(url2) 18 input_box2 = browser.find_element(by = By.NAME, value = 'input2') 19 input_box2.send_keys = keyword_list[i] 20 # 以下url2におけるhtml取得などの処理
私が修正した内容は、対処方法のサイトにもある通りですが、ヘッドレスブラウザの設定をforの中に組み込んでしまうことです。
もちろんこれでエラーは出なくなりました。
ここで冒頭の疑問に戻るのですが、どうしてこの方法でmaxRetryErrorを回避できるのでしょうか。
またmaxRetryErrorは同じコードであってもエラーが出る時と出ないときがあるようなのですが、それはなぜなのでしょうか。
稚拙な質問かとは思うのですが、教えていただけますと幸いです。
よろしくお願いいたします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/03/16 13:38