Python3網絡爬蟲實戰---二、請求庫安裝:GeckoDriver、PhantomJS、Aiohttp

上一篇文章: Python3網絡爬蟲實戰---一、請求庫安裝:Requests、Selenium、ChromeDriver
下一篇文章: Python3網絡爬蟲實戰---三、解析庫的安裝:LXML、BeautifulSoup、PyQuery、Tesserocr

1.1.4 GeckoDriver的安裝

在上一節咱們瞭解了 ChromeDriver 的配置方法,配置完成以後咱們即可以用 Selenium 來驅動 Chrome 瀏覽器來作相應網頁的抓取。
那麼對於 Firefox 來講,也可使用一樣的方式完成 Selenium 的對接,這時須要安裝另外一個驅動 GeckoDriver。
本節來介紹一下 GeckoDriver 的安裝過程。html

1. 相關連接

2. MAC安裝方式

brew install GeckoDriver

3. 驗證安裝

配置完成以後,就能夠在命令行下直接執行 geckodriver 命令測試。
命令行下輸入:
geckodriver
這時控制檯應該有相似輸出,如圖 1-20 所示:
clipboard.pngpython

圖 1-20 控制檯輸出
若是有相似輸出則證實 GeckoDriver 的環境變量配置好了。
隨後再在程序中測試,執行以下 Python 代碼:git

from selenium import webdriver
browser = webdriver.Firefox()

運行以後會彈出一個空白的 Firefox 瀏覽器,證實全部的配置都沒有問題,若是沒有彈出,請檢查以前的每一步的配置。
若是沒有問題,接下來咱們就能夠利用 Firefox 配合 Selenium 來作網頁抓取了。github

4. 結語

到如今位置咱們就可使用 Chrome 或 Firefox 進行網頁抓取了,可是這樣可能有個不方便之處,由於程序運行過程當中須要一直開着瀏覽器,在爬取網頁的過程當中瀏覽器可能一直動來動去,着實不方便。目前最新的 Chrome 瀏覽器版本已經支持了無界面模式,但若是版本較舊就不支持。因此在這裏還有另外一種方便的選擇就是安裝一個無界面瀏覽器 PhantomJS,抓取過程會在後臺運行,不會再有窗口出現,這樣就方便了不少,因此在下一節咱們再瞭解一下 PhantomJS 的相關安裝方法。web

1.1.5 PhantomJS的安裝

若是咱們使用 Chrome 或 Firefox 進行網頁抓取的話,每次抓取的時候,都會彈出一個瀏覽器,比較影響使用。因此在這裏再介紹一個無界面瀏覽器,叫作 PhantomJS。
PhantomJS 是一個無界面的,可腳本編程的 WebKit 瀏覽器引擎。它原生支持多種 web 標準:DOM 操做,CSS 選擇器,JSON,Canvas 以及 SVG。
Selenium 支持 PhantomJS,這樣在運行的時候就不會再彈出一個瀏覽器了,並且其運行效率也是很高的,還支持各類參數配置,使用很是方便,下面咱們就來了解一下 PhantomJS 的安裝過程。編程

1. 相關連接

2. MAC安裝

brew cask install phantomjs

3. 驗證安裝

在 Selenium 中使用的話,咱們只須要將 Chrome 切換爲 PhantomJS 便可。segmentfault

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

運行以後咱們就不會發現有瀏覽器彈出了,但實際上 PhantomJS 已經運行起來了,在這裏咱們訪問了百度,而後將當前的 URL 打印出來。
控制檯輸出以下:api

https://www.baidu.com/

如此一來咱們便完成了 PhantomJS 的配置,在後面咱們能夠利用它來完成一些頁面的抓取。瀏覽器

4. 結語

以上三節咱們介紹了 Selenium 對應的三大主流瀏覽器的對接方式,在後文咱們會對 Selenium 及各個瀏覽器的對接方法進行更加深刻的探究。服務器

1.1.6 Aiohttp的安裝

以前咱們介紹的 Requests 庫是一個阻塞式 HTTP 請求庫,當咱們發出一個請求後,程序會一直等待服務器的響應,直到獲得響應後程序纔會進行下一步的處理,其實這個過程是比較耗費資源的。若是程序能夠在這個等待過程當中作一些其餘的事情,如進行請求的調度、響應的處理等等,那麼爬取效率必定會大大提升。

Aiohttp 就是這樣一個提供異步 Web 服務的庫,從 Python3.5 版本開始,Python 中加入了 async/await 關鍵字,使得回調的寫法更加直觀和人性化,Aiohttp的異步操做藉助於 async/await 關鍵字寫法變得更加簡潔,架構更加清晰。使用異步請求庫來進行數據抓取會大大提升效率,下面咱們來看一下這個庫的安裝方法。

1. 相關連接

2. 安裝

推薦使用 Pip 安裝,命令以下:

pip3 install aiohttp

另外官方還推薦安裝以下兩個庫,一個是字符編碼檢測庫 cchardet,另外一個是加速 DNS 解析庫 aiodns,安裝命令以下:

pip3 install cchardet aiodns

3. 測試安裝

安裝完成以後,能夠在 Python 命令行下測試。

$ python3
>>> import aiohttp

若是沒有錯誤報出,則證實庫已經安裝好了。

4. 結語

咱們會在後面的實例中用到這個庫,好比維護一個代理池,利用異步方式檢測大量代理的運行情況,極大提升效率。

上一篇文章: Python3網絡爬蟲實戰---一、請求庫安裝:Requests、Selenium、ChromeDriver
下一篇文章: Python3網絡爬蟲實戰---三、解析庫的安裝:LXML、BeautifulSoup、PyQuery、Tesserocr
相關文章
相關標籤/搜索