LoginSignup
sumimon123
@sumimon123

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

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

No Answers yet.

Your answer might help someone💌