Python 爬蟲的工具鏈

資料爬蟲是資料分析的入門磚,Python 更是資料爬蟲的熱門工具。由於熱門,因此也會有許許多多相關的配套工具出現。但對於新手來講,該如何尋找到適合的工具實際上是很麻煩的。這一篇文章會介紹一下幾個比較主流的相關工具,與他們適合的使用時機。css

Requests / urllib

Requests 或是 urllib 這兩個套件都是用於處理 HTTP 協定的工具。 urllib 是內建於 Python 有比較完整的 HTTP 的功能(包含網址編碼、檔案下載之類的),Requests 則比較着重在友善地處理 Request/Response 的傳輸。html

BeautifulSoup / Pyquery

BeautifulSoup 與 Pyquery 是用在接到 HTML 字串的 Response 以後,要如何將他們解析爲一個 DOM base 的物件使用。 lxml 跟 html5lib 是兩個做爲讀懂 HTML 字串的解析器(parser)。這兩個套件都支援使用相似 css selector 的方式找資料。html5

Xpath

XPath 是基於 XML 格式的定位技術,也能夠將 HTML 視爲是 XML 的方式處理,再使用 XPath 找到須要的資料。python

Selenium

Selenium 本來是用於網頁測試的瀏覽器模擬工具。但隨着動態網頁/AJAX 的技術方法,僅透過 Requests 的話會遇到 JavaScript loading 的問題,所以能夠搭配 Selenium 這樣的瀏覽器模擬工具,來達到執行 JavaScript 的效果。git

PhantomJS

本來的 Selenium 模擬工具須要調用實體的瀏覽器,像是 Chrome、Firefox 之類的,會形成資源與效能的問題。 PhantomJS 則是一個在 Selenium 中的虛擬瀏覽器方案,能夠在不須打開實體瀏覽器的狀況下進行模擬。github

Ghost

前面提到的 Selenium 是爲了解決沒法執行 JavaScript 的動態網頁問題,是透過真的模擬瀏覽器的運做來處理。 Ghost 則是透過 Python 中來模擬 JavaScript 的程式,達到動態產生資料的目標。瀏覽器

Scrapy

前面講的主要是「基於一個網頁的資料擷取爬蟲」,而 Scrapy 則是一個爬蟲的框架,目標是想要一次將多個網頁都爬取下來。框架

Pyspider

Pyspider 提供了 Web UI 操做頁面的爬蟲框架,他也能支援多個網頁的下載。scrapy

小結

以上這些爬蟲工具大體能夠分爲幾個類型:ide

  1. 靜態網站的資料取得:Requests / urllib
  2. 網頁資料的解析爬取:BeautifulSoup / Pyquery / Xpath
  3. 動態網站的資料取得:Selenium / PhantomJS / Ghost
  4. 多頁面的爬蟲框架:Scrapy / Pyspider

License

本著做由Chang Wei-Yaun (v123582)製做, 以創用CC 姓名標示-相同方式分享 3.0 Unported受權條款釋出。

相關文章
相關標籤/搜索