Cloud Functionsでseleniumを動作させたい
解決したいこと
Cloud Functionsでseleniumを動作させたいです。
例)
yahooサイトからseleniumで株価を取得したいです。
ローカル環境では動作できるのですが、
google cloud functionsからテストするとエラーが発生します。
(gcfにデプロイはできます)
解決方法を教えていただけませんか。
該当するソースコード
# yahooで株価を取得
import os
from pathlib import Path
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# Chrome Driverフォルダ指定
# driver_path = 'C:\\Users\\…\\chromedriver.exe'
def get_driver():
path = os.getcwd()
driverPath = path + "/chromedriver"
headlessPath = path + "/headless-chromium"
options = Options()
options.binary_location = headlessPath
options.add_experimental_option("prefs", {
"profile.default_content_settings.popups": 0,
"download.prompt_for_download": "false",
"download.directory_upgrade": "true",
"plugins.always_open_pdf_externally": True
})
options.add_argument('--headless')
options.add_argument("--disable-gpu")
options.add_argument("--window-size=1280x1696")
options.add_argument("--no-sandbox")
options.add_argument("--hide-scrollbars")
options.add_argument("--enable-logging")
options.add_argument("--log-level=0")
options.add_argument("--v=99")
options.add_argument("--single-process")
options.add_argument("--ignore-certificate-errors")
options.add_argument("--disable-dev-shm-usage")
driver = webdriver.Chrome(driverPath, options=options)
driver.command_executor._commands["send_command"] = (
'POST',
'/session/$sessionId/chromium/send_command'
)
driver.execute(
"send_command",
params={
'cmd': 'Page.setDownloadBehavior',
'params': { 'behavior': 'allow' }
})
return driver
def kabu():
# ローカル環境時
# driver = webdriver.Chrome(executable_path=driver_path)
driver = get_driver()
try:
driver.get("http://www.yahoo.co.jp")
driver.find_element_by_css_selector("#tabTopics2 > a").click()
ret = driver.find_element_by_css_selector("#tabpanelTopics2 > div > div:nth-child(2) > div > div > a:nth-child(1) > div._1MotBVaN8-ZbqGA2Wc3v-R > span > span._1Cr2FsRZgNQlia2CFSRBBG")
a = ret.text
print(a)
finally:
driver.quit()
return
# ローカル環境時
# if __name__=='__main__':
def main(event, context):
kabu()
# requirements.txt
google-cloud-error-reporting==0.30.0
selenium
setuptools
自分で試したこと
chromedriverとheadless-chromiumは下記からダウンロードしました。
https://github.com/ryfeus/gcf-packs
0