上一篇文章: Python3網絡爬蟲實戰---一、請求庫安裝:Requests、Selenium、ChromeDriver
下一篇文章: Python3網絡爬蟲實戰---三、解析庫的安裝:LXML、BeautifulSoup、PyQuery、Tesserocr
在上一節咱們瞭解了 ChromeDriver 的配置方法,配置完成以後咱們即可以用 Selenium 來驅動 Chrome 瀏覽器來作相應網頁的抓取。
那麼對於 Firefox 來講,也可使用一樣的方式完成 Selenium 的對接,這時須要安裝另外一個驅動 GeckoDriver。
本節來介紹一下 GeckoDriver 的安裝過程。html
brew install GeckoDriver
配置完成以後,就能夠在命令行下直接執行 geckodriver 命令測試。
命令行下輸入:
geckodriver
這時控制檯應該有相似輸出,如圖 1-20 所示:python
圖 1-20 控制檯輸出
若是有相似輸出則證實 GeckoDriver 的環境變量配置好了。
隨後再在程序中測試,執行以下 Python 代碼:git
from selenium import webdriver browser = webdriver.Firefox()
運行以後會彈出一個空白的 Firefox 瀏覽器,證實全部的配置都沒有問題,若是沒有彈出,請檢查以前的每一步的配置。
若是沒有問題,接下來咱們就能夠利用 Firefox 配合 Selenium 來作網頁抓取了。github
到如今位置咱們就可使用 Chrome 或 Firefox 進行網頁抓取了,可是這樣可能有個不方便之處,由於程序運行過程當中須要一直開着瀏覽器,在爬取網頁的過程當中瀏覽器可能一直動來動去,着實不方便。目前最新的 Chrome 瀏覽器版本已經支持了無界面模式,但若是版本較舊就不支持。因此在這裏還有另外一種方便的選擇就是安裝一個無界面瀏覽器 PhantomJS,抓取過程會在後臺運行,不會再有窗口出現,這樣就方便了不少,因此在下一節咱們再瞭解一下 PhantomJS 的相關安裝方法。web
若是咱們使用 Chrome 或 Firefox 進行網頁抓取的話,每次抓取的時候,都會彈出一個瀏覽器,比較影響使用。因此在這裏再介紹一個無界面瀏覽器,叫作 PhantomJS。
PhantomJS 是一個無界面的,可腳本編程的 WebKit 瀏覽器引擎。它原生支持多種 web 標準:DOM 操做,CSS 選擇器,JSON,Canvas 以及 SVG。
Selenium 支持 PhantomJS,這樣在運行的時候就不會再彈出一個瀏覽器了,並且其運行效率也是很高的,還支持各類參數配置,使用很是方便,下面咱們就來了解一下 PhantomJS 的安裝過程。編程
brew cask install phantomjs
在 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 的配置,在後面咱們能夠利用它來完成一些頁面的抓取。瀏覽器
以上三節咱們介紹了 Selenium 對應的三大主流瀏覽器的對接方式,在後文咱們會對 Selenium 及各個瀏覽器的對接方法進行更加深刻的探究。服務器
以前咱們介紹的 Requests 庫是一個阻塞式 HTTP 請求庫,當咱們發出一個請求後,程序會一直等待服務器的響應,直到獲得響應後程序纔會進行下一步的處理,其實這個過程是比較耗費資源的。若是程序能夠在這個等待過程當中作一些其餘的事情,如進行請求的調度、響應的處理等等,那麼爬取效率必定會大大提升。
Aiohttp 就是這樣一個提供異步 Web 服務的庫,從 Python3.5 版本開始,Python 中加入了 async/await 關鍵字,使得回調的寫法更加直觀和人性化,Aiohttp的異步操做藉助於 async/await 關鍵字寫法變得更加簡潔,架構更加清晰。使用異步請求庫來進行數據抓取會大大提升效率,下面咱們來看一下這個庫的安裝方法。
推薦使用 Pip 安裝,命令以下:
pip3 install aiohttp
另外官方還推薦安裝以下兩個庫,一個是字符編碼檢測庫 cchardet,另外一個是加速 DNS 解析庫 aiodns,安裝命令以下:
pip3 install cchardet aiodns
安裝完成以後,能夠在 Python 命令行下測試。
$ python3 >>> import aiohttp
若是沒有錯誤報出,則證實庫已經安裝好了。
咱們會在後面的實例中用到這個庫,好比維護一個代理池,利用異步方式檢測大量代理的運行情況,極大提升效率。
上一篇文章: Python3網絡爬蟲實戰---一、請求庫安裝:Requests、Selenium、ChromeDriver
下一篇文章: Python3網絡爬蟲實戰---三、解析庫的安裝:LXML、BeautifulSoup、PyQuery、Tesserocr