前言
在前兩篇文章(首篇、第二篇)中,我們介紹了Selenium的使用,並進行了實作示範。接下來,我們將介紹如何透過Docker搭配Headless模式,讓爬蟲程式在不需要開啟瀏覽器視窗的狀況下進行運作,為自動化以及規模化打下基礎。
容器化Chrome瀏覽器
Docker,或者說容器化技術,是現在開發以及部署中非常重要的一個技術。Selenium團隊也提供了這方面得協助,開源了docker-selenium,使我們有機會在容器化的基礎上,使用各個常見的瀏覽器進行互動式爬蟲的操作。
處理流程
Headless模式
要在不開啟瀏覽器的前提下進行運作,需要使用headless
模式。同樣的,我們以Chrome進行示範。在先前的示範中,我們雖然有使用Options
,但並未對其進行相關設定;在使用headless
模式時,需要進行以下處理:
|
|
透過把--headless
加入Options
,使得web driver
在啟動瀏覽器時,不會開啟視窗。這樣我們就可以在沒有連接顯示器的環境中運行我們的爬蟲程式。
使用容器架設遠端運作的瀏覽器
先前我們有提到,Selenium有提供虛擬化的瀏覽器容器讓我們可以使用遠端的方式來進行爬蟲運作。為了使用遠端運作的模式,我們需要兩個步驟:
- 啟動容器
- 將程式設定為遠端運作模式,並指定遠端運作的對象
啟動容器
在啟動容器前,我們需要先建立一個資料夾,用於掛載至容器內部使用。假設家目錄為/home/ubuntu
:
|
|
註釋
更改權限是必要的,否則資料將無法正常寫入至資料夾,詳細請參考: https://github.com/SeleniumHQ/docker-selenium?tab=readme-ov-file#headless
我們可以透過以下的指令來啟動Chrome的容器:
|
|
在啟動成功之後,就可以進入下一步:程式設定。
指定在遠端運行爬蟲程式
在web driver
的設定上,可以指定使用遠端的對象來進行運作,設定方式如下:
|
|
只要使用webdriver.Remote()
搭配command_executor
參數即可讓爬蟲程式使用遠端對象進行運作。
結語
這本篇文章中,我們介紹了如何使用容器來作為遠端運作的對象,並示範了如何進行程式方面的設定。