あるサイトのLP(縦に長いページ)をseleniumのスクリーンショットで1枚の画像として取得しようとしているのですがうまく行かないケースがあります。
ほとんどのページはうまく行くのですがどうも長すぎるとタイムアウトエラーになっているようです。
そのエラーの逃げ方がわかりません。
エラーになっているサイトは以下です。(違うpcでやると1度取得できたのですが。。。)
https://emerire.com/lp/tr_gs/
ご回答お願いいたします。
コードは以下になります
import time from selenium import webdriver from selenium.webdriver.chrome.options import Options #ヘッドレスでdriver立ち上げ options = Options() options.add_argument('--headless') driver = webdriver.Chrome(options=options) driver.set_page_load_timeout(60) driver.get('URL') #Webページの縦横サイズを取得し、ウィンドウを合わせる(そうしないと画面全体がスクショできない) page_width = driver.execute_script('return document.body.scrollWidth') page_Height = driver.execute_script('return document.body.scrollHeight') driver.set_window_size(page_width,page_Height) #スクリーンショット実行 driver.save_screenshot("/Users/ユーザー/Desktop/test/screenshot.png") #ここでタイムアウトエラー発生 driver.quit()
エラー文
--------------------------------------------------------------------------- TimeoutException Traceback (most recent call last) <ipython-input-85-6a7157172f9f> in <module> ----> 1 driver.save_screenshot("/Users/ユーザー/Desktop/test/screenshot.png") /usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py in save_screenshot(self, filename) 1053 driver.save_screenshot('/Screenshots/foo.png') 1054 """ -> 1055 return self.get_screenshot_as_file(filename) 1056 1057 def get_screenshot_as_png(self): /usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py in get_screenshot_as_file(self, filename) 1030 warnings.warn("name used for saved screenshot does not match file " 1031 "type. It should end with a `.png` extension", UserWarning) -> 1032 png = self.get_screenshot_as_png() 1033 try: 1034 with open(filename, 'wb') as f: /usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py in get_screenshot_as_png(self) 1062 driver.get_screenshot_as_png() 1063 """ -> 1064 return base64.b64decode(self.get_screenshot_as_base64().encode('ascii')) 1065 1066 def get_screenshot_as_base64(self): /usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py in get_screenshot_as_base64(self) 1072 driver.get_screenshot_as_base64() 1073 """ -> 1074 return self.execute(Command.SCREENSHOT)['value'] 1075 1076 def set_window_size(self, width, height, windowHandle='current'): /usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py in execute(self, driver_command, params) 319 response = self.command_executor.execute(driver_command, params) 320 if response: --> 321 self.error_handler.check_response(response) 322 response['value'] = self._unwrap_value( 323 response.get('value', None)) /usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py in check_response(self, response) 240 alert_text = value['alert'].get('text') 241 raise exception_class(message, screen, stacktrace, alert_text) --> 242 raise exception_class(message, screen, stacktrace) 243 244 def _value_or_default(self, obj, key, default): TimeoutException: Message: timeout: Timed out receiving message from renderer: 10.000 (Session info: headless chrome=83.0.4103.97)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。