最近在寫將自己的selenium爬蟲程式放在GoogleComputeEngine上運行,環境設置的過程中不小心踩了不少坑,所以決定記錄下這篇,希望提供給之後想在GCP上設定selenium爬蟲的朋友!
如果對GCP或是selenium不熟悉的朋友,建議可以先閱讀以下兩篇文章:
Table
首先在Google Compute Engine上安裝pip
1 |
sudo apt-get install python3-pip |
安裝selenium
1 |
pip3 install selenium |
安裝Chrome瀏覽器
1 |
sudo apt-get install chromium-driver |
安裝Chrome Driver
- 自動安裝Chrome Driver
-
- 讓webdriver_manager自動幫你在主機內安裝Chrome Driver的穩定版本,並且會設定好路徑和權限
1 |
pip3 install webdriver_manager |
-
- 但是在啟動driver的時候要用ChromeDriverManager().install()來告知路徑
1 |
from selenium import webdriver<br>from selenium.webdriver.chrome.options import Options<br>from webdriver_manager.chrome import ChromeDriverManager<br><br><br>opts = Options()<br>opts.add_argument('--headless') #無頭chrome<br>opts.add_argument('--disable-gpu')<br><br>driver = webdriver.Chrome(executable_path=ChromeDriverManager().install(),chrome_options=opts)<br><br>driver.get('https://www.google.com/')<br>print(drive.title)<br>driver.close() |
2. 如果是手動安裝Chrome Driver的朋友
-
- 首先到 http://chromedriver.chromium.org/ 下載最新的Chrome版本Driver,並上傳到VM虛擬主機上,如果這時候運行程式的話會噴出permission denied的權限錯誤,這時候在輸入以下指令就會可以執行囉
1 |
$ chmod a+x chromedriver |
-
- 記得要把剛剛的ChromeDriverManager().install()換成’位置/chromedriver’
1 |
from selenium import webdriver<br>from selenium.webdriver.chrome.options import Options<br><br><br>opts = Options()<br>opts.add_argument('--headless') #無頭chrome<br>opts.add_argument('--disable-gpu')<br><br>driver = webdriver.Chrome(executable_path='位置/chromedriver',chrome_options=opts)<br><br>driver.get('https://www.google.com/')<br>print(drive.title)<br>driver.close() |
以上安裝完就可以運行看看,如果print出google的網頁標題的話,恭喜你代表就成功囉!
以下是我通常還會安裝的library
1 |
pip3 install bs4 fake_useragent threadpool mysql-connector sqlalchemy |
- bs4 (美麗的湯)
- fake_useragent (這可以自動產生useragent)
- threadpool (用於多線程池)
- mysql-connector 和 sqlalchemy (是串接Mysql資料庫)
最後相關延伸閱讀:
▍關於與 Concurrency Programming 相關文章,可以參考:
- 【Python教學】淺談 Concurrency Programming
- 【Python教學】淺談 GIL & Thread-safe & Atomic
- 【Python教學】淺談 Multi-processing & Multi-threading 使用方法
- 【Python教學】淺談 Multi-processing pool 使用方法
▍關於 Async IO 相關文章,可以參考:
- 【Python教學】淺談 Coroutine 協程使用方法
- 【Python教學】Async IO Design Patterns 範例程式
- 【實戰篇】 解析 Python 之父寫的 web crawler 異步爬蟲
那麼有關於【爬蟲筆記】如何在 GoogleComputeEngine 上運行 selenium 爬蟲 的介紹就到這邊告一個段落囉!有任何問題可以在以下留言~
有關 Max行銷誌的最新文章,都會發佈在 Max 的 Facebook 粉絲專頁,如果想看最新更新,還請您按讚或是追蹤唷!
在〈【爬蟲筆記】如何在 GoogleComputeEngine 上運行 selenium 爬蟲〉中有 5 則留言
Max您好,我是一名大學生,日前在研究GCP時發現您的網誌覺得內容非常豐富,十分受用!但是當我照著您的教學嘗試在GCP上面安裝Selenium時,卻發現安裝完了要運行時跳出 can’t read /var/mail/selenium,將程式碼放在檔案內直接執行時則是跳出No module named selenium,想請問您知道這個問題如何解決嗎?謝謝!
HI,
試試看run py檔時的時候用python3來下(ex: python3 main.py)
我是在 GCE 上使用 f1-micro 的機器,並選用 ubuntu 18.04 LTS 為 OS
在安裝 Chrome 瀏覽器時,還需要增加以下步驟:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install chromium-driver
wget -c https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
sudo apt-get install
sudo apt-get install -f
然後 pythone 程式碼修改成這樣:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager
opts = Options()
opts.add_argument(‘–headless’) #無頭chrome
opts.add_argument(‘–disable-gpu’)
driver = webdriver.Chrome(executable_path=ChromeDriverManager().install(),chrome_options=opts)
driver.get(‘https://www.google.com/’)
print(driver.title)
driver.close()
HI, 文章中在 import 有缺少的部分,已經修正內文,謝謝補充!
太感谢了!我正在为怎么把爬虫搬到GCP上运行发愁就找到了这篇文章。