実現したいこと
GCPfunction上で、chromedriverのパスを通したい。
前提
スクレイピングした情報をもとにgoogleカレンダーに予定を追加するコードを作成しています。
GCP上で定期的に動作させたいと考えており、GCPfunctionにコードをデプロイしているのですが、スクレイピングに使用しているchromdriverのパスを通すことが上手く出来ません。そもそもfunction上にアップロードしたファイルのパスがよく分かっていないため、ご教授いただけましたら幸いです。
発生している問題・エラーメッセージ
Traceback (most recent call last): File "/workspace/selenium/webdriver/common/service.py", line 72, in start self.process = subprocess.Popen(cmd, env=self.env, File "/layers/google.python.runtime/python/lib/python3.10/subprocess.py", line 971, in __init__ self._execute_child(args, executable, preexec_fn, close_fds, File "/layers/google.python.runtime/python/lib/python3.10/subprocess.py", line 1847, in _execute_child raise child_exception_type(errno_num, err_msg, err_filename) FileNotFoundError: [Errno 2] No such file or directory: '指定したchromedriverのパス'
該当のソースコード
python3.10.9
1import os 2from time import sleep 3from selenium import webdriver 4from selenium.webdriver.chrome.options import Options 5from selenium.webdriver.common.by import By 6from selenium.common.exceptions import TimeoutException 7from datetime import datetime 8 9 10options = Options() 11 12options.add_argument('--headless') 13options.add_argument('--disable-gpu') 14options.add_argument('--no-sandbox') 15options.add_argument('--hide-scrollbars') 16options.add_argument('--single-process') 17options.add_argument('--ignore-certificate-errors') 18 19 20USERNAME = 'hoge' 21PASSWORD = 'hogehoge' 22URL = 'hogeho' 23ERRORURL = 'hogehogeho' 24 25 26def get_manaba_report(): 27 driver_path = "試したことにおけるpath" 28 driver = webdriver.Chrome(executable_path= driver_path) 29 #以下スクレイピングのコード文
試したこと
GCPfunction上でのファイルの操作に関して全く知識がないため、webの情報をもとに以下を試しましたが、上手く行きませんでした。
driver_path = '/tmp/chromedriver' →上記のエラーメッセージ driver_path = os.getcwd() + '/chromedriver' →同上。pathは'/workspace/chromedriver'と返された上でエラーとなっていました。
補足情報(FW/ツールのバージョンなど)
python 3.10.9
chromedriver 109.0.5414.74(おそらくGCP上ではバージョンが相違を起こすと思いますが、一先ずパスを通すことを優先したいです。)
あなたの回答
tips
プレビュー