在 Colab 上使用 selenium 與 webdriver 不報錯!
試試 requests
起初,我原本以為 Colab 設計上有限制使用者在上面爬蟲,不過實測過後,使用 requests get 可以確實取得資料。
selenium 想必也可以?
在本機端爬蟲時我都是在 Windows 11 環境下運行 chromedriver;因此剛開始測試時,我直接將 chromedriver 上傳至雲端並使用
1 | from google.colab import driver |
來架接 Google Drive 路徑存取 chrome-driver
卻忽略了一個重點:
Google Colab 是 Linux 架構!!!!!
Google Colab 是 Linux 架構!!!!!
Google Colab 是 Linux 架構!!!!!
(很重要講三次)
接著,我讓程式讀取 Linux64 的 chromedriver 的雲端路徑,並參考了需多網路上的做法卻依然持續出現 wrong permissions
的報錯。
出 bug 的解方
解決的過程中,歷經了腦袋一片混亂,到處翻了各種語言的資料,被 ChatGPT 耍了一波……QAQ
這邊就直接讓大家少走這些冤枉路吧~
(以下解方為 Oct. 2nd, 2023 時適用的方法)
- 為何 Google Colab 無法直接執行 selenium 與 webdriver(chromedriver)?
- Colab 架構為 Linux 雲端虛擬機,由於目前使用 Ubuntu 20.04 LTS,已不再支援直接使用 chromium-browser
- 解決辦法為:從 Debian buster repository 安裝套件
- 若完成上述步驟後為何還是會有其他報錯
- 完成上述步驟後基本上已經可以執行程式,若還有報錯,此時大多數的原因為 selenium 在 4.10.0 版後,陸續有不少語法上的更新,而
pip install selenium
預設安裝最新版本 4.13.0,許多網路上及書本中的 source code 無法相容 - 解決辦法為:安裝時指定 4.3.0 版,
pip install selenium==4.3.0
- 完成上述步驟後基本上已經可以執行程式,若還有報錯,此時大多數的原因為 selenium 在 4.10.0 版後,陸續有不少語法上的更新,而
source code
從 Debian buster repository 安裝套件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44%%shell
# Ubuntu no longer distributes chromium-browser outside of snap
#
# Proposed solution: https://askubuntu.com/questions/1204571/how-to-install-chromium-without-snap
# Add debian buster
cat > /etc/apt/sources.list.d/debian.list <<'EOF'
deb [arch=amd64 signed-by=/usr/share/keyrings/debian-buster.gpg] http://deb.debian.org/debian buster main
deb [arch=amd64 signed-by=/usr/share/keyrings/debian-buster-updates.gpg] http://deb.debian.org/debian buster-updates main
deb [arch=amd64 signed-by=/usr/share/keyrings/debian-security-buster.gpg] http://deb.debian.org/debian-security buster/updates main
EOF
# Add keys
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys DCC9EFBF77E11517
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 112695A0E562B32A
apt-key export 77E11517 | gpg --dearmour -o /usr/share/keyrings/debian-buster.gpg
apt-key export 22F3D138 | gpg --dearmour -o /usr/share/keyrings/debian-buster-updates.gpg
apt-key export E562B32A | gpg --dearmour -o /usr/share/keyrings/debian-security-buster.gpg
# Prefer debian repo for chromium* packages only
# Note the double-blank lines between entries
cat > /etc/apt/preferences.d/chromium.pref << 'EOF'
Package: *
Pin: release a=eoan
Pin-Priority: 500
Package: *
Pin: origin "deb.debian.org"
Pin-Priority: 300
Package: chromium*
Pin: origin "deb.debian.org"
Pin-Priority: 700
EOF
# Install chromium and chromium-driver
apt-get update
apt-get install chromium chromium-driver
# Install selenium
pip install selenium #若要指定版本,在這行後邊直接加上 ==版本號碼執行 selenium 程式
1
2
3
4
5
6
7from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.headless = True
drive = webdriver.Chrome('chromedriver',options=chrome_options)
drive.get("https://www.google.com")
References
- 在 Colab 上使用 selenium 與 webdriver 不報錯!
- https://whyhugo.github.io/2023/10/02/using-selenium-in-colab/
- 文章作者:Hugo Wang
- 撰寫時間:2023-10-02
- 《版權宣告》
-
CC BY-SA 4.0
署名-相同方式共享
留言