1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Cloud Functions 第2世代で selenium でスクレイピングする

Posted at

Cloud Functions を用いて selenium でスクレイピングするとき、もともと次の記事を参考にしてました。
https://blowup-bbs.com/gcp-cloud-functions-python3/

もともと個人開発でスクレイピングをしていた時は上記の記事のやり方でうまく動いていたのですが、久々に環境に手を入れたら動かなくなってしまいました。
原因もよくわからない(たぶんライブラリを更新したせい)ため、一から Functions で selenium を用いてスクレイピングする環境を作りました。

まあまあ手間がかかったので備忘録的に記事にします。

手順

前提

ライブラリのバージョン

selenium==4.15.2

Chrome のダウンロードと配置

Cloud Functions 上で selenium でスクレイピングするには headless Chrome と chromedriver が必要です。

ダウンロードするには Index of chromium-browser-snapshots/Linux_x64/ ページから適当なバージョンの Chrome をダウンロードします。

最新バージョンにしたい場合は一番下のほうにある LAST_CHANGE のファイルに記載のバージョンを確認します。

執筆時点での最新バージョンは 1346408 だったのでそのフォルダを開きます。

そこから chrome-linux.zip と chromedriver_linux64.zip をダウンロードして解凍しておきます。

解凍したものをデプロイするディレクトリに配置します。
chrome-linux.zip を解凍したものを丸ごと配置します。
chromedirver もそのまま配置します。

コード

import os

from selenium import webdriver
from selenium.webdriver.chrome.service import Service

options = webdriver.ChromeOptions()

# option は適当につける
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')

path = os.getcwd()
driverPath = os.path.join(path, "chromedriver")
headlessPath = os.path.join(path, "chrome-linux/chrome")
options.binary_location = headlessPath

service = Service(driverPath)
driver = webdriver.Chrome(service=service, options=options)

もろもろの Functions を動かす設定は割愛します。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?