1. 程式人生 > >[基礎]-selenium + phantomjs/chrome/Firefox 的安裝與使用[2018]

[基礎]-selenium + phantomjs/chrome/Firefox 的安裝與使用[2018]

不用即忘,做為一名碼奴,相信這話得到大多數人的認可。做為一名有多年經驗的爬手,有時也要經常查詢曾經用到的知識。這不,近期有一段時間沒有接觸模擬爬取的,電腦系統也因某些原因重新了,所有環境都得從0開始。於是,發現想用selenium時瞬間忘記當時是怎麼安裝的了,有時也會碰到一些莫名其妙的問題上網查了半天也不得其果,今天正好有時間,打算好好溫習一下這塊基礎知識,順便記錄下來,方便以後查閱。

這裡大概說一下selenium,算是給一些剛入門的夥伴預熱一下。首先,selenium本身是一個自動化測試工具,利用它我們可以驅動瀏覽器來執行特定的動作,比如點選、下拉、雙擊等操作。它本來只流行於測試或運維這一小圈子,後來,正是各路“爬手”的使用,把它慢慢的推廣起來,直到今天,它依然是爬蟲某些領域很重要的,不可替代的技術方案之一。特別是對JS渲染的頁面,或動態頁面,或實現模擬登入,非常方便。

使用selenium來抓取網頁,需要配合phantomjs/chrome/Firefox。下面詳細介紹這幾個工具的安裝。

目錄

一、selenium安裝

1.1 windows下安裝

(1)pip安裝

(2)wheel安裝

1.2 linux下安裝

1.3 驗證安裝

二、ChromeDriver安裝

2.1 下載ChromeDriver

2.2 環境變數配置

(1) windows下配置

(2)linux or mac下配置

2.3 驗證安裝

三、GeckoDriver安裝

四、PhantomJS安裝

4.1 phantomjs下載

4.2 驗證安裝


一、selenium安裝

截止2018.8.30 我下載的最新版本是3.14

相關連結:

官方網站:https://www.seleniumhq.org/

中文文件:https://selenium-python-zh.readthedocs.io/en/latest/

1.1 windows下安裝

(1)pip安裝

執行如下命令即可:

pip3 install selenium

這是最優先推薦的安裝方式。

(2)wheel安裝

到PyPI下載wheel檔案進行安裝 。

下載地址:https://pypi.org/project/selenium/#files

,把檔案selenium-3.14.0-py2.py3-none-any.whl下載即可。

然後進入wheel檔案所在目錄,使用pip安裝:

pip3 install selenium-3.14.0-py2.py3-none-any.whl

1.2 linux下安裝

基本同windows。

到此,我們已經成功安裝了selenium,但還不能用它來配合Chrome,Firfox,Phantomjs瀏覽器來抓取內容,還需要安裝對應的瀏覽器驅動模組。

1.3 驗證安裝

安裝結束,需要驗證上述安裝是否成功,可進入python命令列互動模式,匯入import selenium,如沒報異常則表示成功:

D:\>python3
Python 3.6.6 (v3.6.6:4cf1f54eb7, Jun 27 2018, 03:37:03) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import selenium
>>>

 

二、ChromeDriver安裝

ChromeDriver是用來驅動谷歌瀏覽器。

首先下載谷歌瀏覽器,這裡不多說,並記下所下版本,這裡我的版本是68.0.3440.106。

2.1 下載ChromeDriver

相關連結:

官方文件:https://sites.google.com/a/chromium.org/chromedriver/downloads

官方下載地址:https://sites.google.com/a/chromium.org/chromedriver/downloads

淘寶映象下載:http://npm.taobao.org/mirrors/chromedriver/

如下圖所示,每個版本的ChromeDriver僅支援某範圍內的chrome瀏覽器版本,如果不一致,後面呼叫時會出錯。

這裡我下載的版本是2.41:https://chromedriver.storage.googleapis.com/index.html?path=2.41/

 

2.2 環境變數配置

下載後,將所下載zip包解壓後將chromedriver.exe放到環境變數下即可。

(1) windows下配置

建議將檔案chromedriver.exe放到python的Scripts目錄,如我的:C:\Program Files\python3\Scripts。也可以將其放在其它目錄下,但是需要將此目錄新增到系統環境變數path下。

(2)linux or mac下配置

在linux or mac下,可以將檔案chromedriver.exe放到環境變數或移到環境變數所在目錄裡,如:/usr/bin目錄。

此外,也可以不移動,只需要將檔案chromedriver.exe所在目錄新增到$PATH環境變數中,這樣可以通過修改檔案~/.profile,新增如下命令:

export PATH="$PATH:/usr/local/chromedriver"

儲存退出後,執行如下命令使之馬上生效

source ~/.profile

2.3 驗證安裝

直接在命令列下執行命令:chromedriver,如有如下輸出則說明安裝成功。

python程式碼測試呼叫:

from selenium import webdriver
# b = webdriver.Chrome('C:\Program Files\chromedriver_win32\chromedriver.exe')
b = webdriver.Chrome()

執行後如能彈出瀏覽器則說明OK。

這裡需要注意的是,有時配置chromedriver新增到環境後,若在pycharm開發平臺上執行報異常"找不到指定檔案啥的",則需要重啟下pycharm。

 

三、GeckoDriver安裝

GeckoDriver主要是用來驅動火狐瀏覽器。

相關連結:

github:https://github.com/mozilla/geckodriver

下載地址:https://github.com/mozilla/geckodriver/releases

下面具體的安裝方式這裡不多說,基本和上述chromedriver,也是需要下載和火狐版本號匹配的GeckoDriver,以及配置環境變數。下面主要說下驗證安裝.

命令列驗證安裝

輸入:geckodriver

如果控制檯有如下輸出則是正常了。

python程式碼驗證

from selenium import webdriver
b = webdriver.Firefox()

如彈出空白火狐瀏覽器,則OK。

 

四、PhantomJS安裝

上面所述的谷歌或火狐均為有介面的瀏覽器模式,如果抓取量大或長期的,那就不怎麼方便了,當然,目前最新版本的谷歌瀏覽器也有無介面的版本了。而phantomjs是無介面的瀏覽器,更快更節省記憶體。phantomjs是一個無介面的,可指令碼程式設計的webkit瀏覽器引擎,支援多種WEB標準,selenium高度支援phantomjs。

相關連結

官方下載:http://phantomjs.org/download.html

官方文件:http://phantomjs.org/quick-start.html

API介面文件:http://phantomjs.org/api/command-line.html

4.1 phantomjs下載

phantomjs支援多種作業系統,下載時只需要下載對應作業系統平臺即可。這裡我下載的是phantomjs-2.1.1-windows.zip 

下載後解壓,將目錄phantomjs-2.1.1-windows\bin新增到系統環境變數中即可。具體操作同章節二。

4.2 驗證安裝

命令列驗證:

phantomjs

執行後如果進入phantomjs的命令列模式,則表示成功,如:

python程式碼驗證:

from selenium import webdriver
b = webdriver.PhantomJS()
b.get('https://baidu.com')
print(b.current_url)

執行之後不會有瀏覽器介面彈出,但實際上phantomjs已經執行起來了。

 

 

到此,selenium 的安裝過程已寫完。更多詳情使用請關注部落格。

========================================end 木風卜雨========================================

========================================end 木風卜雨========================================