前提
aws lambdaでスクレイピングをしたいです。
参考サイトを見て作成したんですがchromedriverのパスがどうしても通りません。
他に理由があるのでしょうか。
コメ欄にあるパスも試したり、自分でパスを考えて配置したりしてますが無理でした。
レイヤーの「headless」
headless ← ここを保存
┗ python
┗ bin
┣ chromedriver
┗ headless-chromium
レイヤーの「selenium」
python ← ここを保存
┗ lib
┗ python3.7
┗ site-packages
┣ selenium
┣ selenium-3.141.0.dist-info
┣ urllib3
┗ urllib3-1.26.2.dist-info
実現したいこと
aws lambdaでスクレイピングしたい
発生している問題・エラーメッセージ
{ "errorMessage": "Message: 'chromedriver' executable needs to be in PATH. Please see https://chromedriver.chromium.org/home\n", "errorType": "WebDriverException", "stackTrace": [ " File \"/var/task/lambda_function.py\", line 20, in lambda_handler\n browser = webdriver.Chrome(\n", " File \"/opt/python/lib/python3.8/site-packages/selenium/webdriver/chrome/webdriver.py\", line 70, in __init__\n super(WebDriver, self).__init__(DesiredCapabilities.CHROME['browserName'], \"goog\",\n", " File \"/opt/python/lib/python3.8/site-packages/selenium/webdriver/chromium/webdriver.py\", line 89, in __init__\n self.service.start()\n", " File \"/opt/python/lib/python3.8/site-packages/selenium/webdriver/common/service.py\", line 81, in start\n raise WebDriverException(\n" ]
該当のソースコード
python
1# python配下自動でimport 2from selenium import webdriver 3 4def lambda_handler(event, context): 5 6 URL = "https://news.yahoo.co.jp/" 7 8 options = webdriver.ChromeOptions() 9 options.add_argument("--headless") 10 options.add_argument("--disable-gpu") 11 options.add_argument("--hide-scrollbars") 12 options.add_argument("--single-process") 13 options.add_argument("--ignore-certificate-errors") 14 options.add_argument("--window-size=880x996") 15 options.add_argument("--no-sandbox") 16 options.add_argument("--homedir=/tmp") 17 options.binary_location = "/opt/python/bin/headless-chromium" 18 19 #ブラウザの定義 20 browser = webdriver.Chrome( 21 "/opt/python/bin/chromedriver", 22 options=options 23 ) 24 25 26 browser.get(URL) 27 title = browser.title 28 browser.close() 29 30 return title
コメ欄を見て下記のパスも試しました。
python
1 options.binary_location = "/opt/python/bin/headless-chromium" 2 3→ options.binary_location = "/opt/headless/python/bin/headless-chromium" 4 5 #ブラウザの定義 6 browser = webdriver.Chrome( 7 "/opt/python/bin/chromedriver", 8 options=options 9 ) 10→ browser = webdriver.Chrome( 11 "/opt/headless/python/bin/chromedriver", 12 options=options 13 )
試したこと
補足情報(FW/ツールのバージョンなど)
python3.8
あなたの回答
tips
プレビュー