前提・実現したいこと
AWSのLambda上でSeleniumを用いたスクレイピングコードを開発しています。
使用言語はphthon3.7です。
コードの作成、およびレイヤーへアップロードしたパッケージのディレクトリはこちらの方のやり方にならいました。
実行中に下記のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
{ "errorMessage": "Message: 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home\n", "errorType": "WebDriverException", "stackTrace": [ " File \"/var/task/lambda_function.py\", line 21, in lambda_handler\n browser = webdriver.Chrome(executable_path=\"/opt/python/bin/chromedriver\", options=options)\n", " File \"/opt/python/lib/python3.7/site-packages/selenium/webdriver/chrome/webdriver.py\", line 73, in __init__\n self.service.start()\n", " File \"/opt/python/lib/python3.7/site-packages/selenium/webdriver/common/service.py\", line 83, in start\n os.path.basename(self.path), self.start_error_message)\n" ] }
該当のソースコード
from selenium import webdriver import json def lambda_handler(event, context): URL = "スクレイピングを行うURL" options = webdriver.ChromeOptions() options.add_argument("--headless") options.add_argument("--disable-gpu") options.add_argument("--hide-scrollbars") options.add_argument("--single-process") options.add_argument("--ignore-certificate-errors") options.add_argument("--window-size=880x996") options.add_argument("--no-sandbox") options.add_argument("--homedir=/tmp") options.binary_location = "/opt/python/bin/headless-chromium" #ブラウザの定義(この部分でエラーが発生している) browser = webdriver.Chrome("/opt/python/bin/chromedriver", options=options) browser.get(URL) title = browser.title browser.close() return title
試したこと/調べたこと
ブラウザ定義の部分でpathを指定している部分を
browser = webdriver.Chrome(executable_path="/opt/python/bin/chromedriver", options=options)
としても同様のエラー文が出てしまいました。
考えられる点としては、lambda上でchromedriver関連のレイヤーのアップロードがうまく出来ていない可能性があるのでしょうか?
レイヤーへアプロードしたzipファイル内のフォルダ構成も参考サイトと照らし合わせて全く同じものをアップロードしました。
他にも考えられるエラーの原因やコードミスなど、なんでもアドバイスいただけると助かります。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。