三種 Python 網路內容抓取工具與爬蟲

Jason Baker發表於2017-11-03

運用這些很棒的 Python 爬蟲工具來獲取你需要的資料。

 python網路內容抓取工具與爬蟲

在一個理想的世界裡,你需要的所有資料都將以公開而文件完備的格式清晰地展現,你可以輕鬆地下載並在任何你需要的地方使用。

然而,在真實世界裡,資料是凌亂的,極少被打包成你需要的樣子,要麼經常是過期的。

你所需要的資訊經常是潛藏在一個網站裡。相比一些清晰地、有調理地呈現資料的網站,更多的網站則不是這樣的。爬取資料crawling挖掘資料scraping、加工資料、整理資料這些是獲取整個網站結構來繪製網站拓撲來收集資料所必須的活動,這些可以是以網站的格式儲存的或者是儲存在一個專有資料庫中。

也許在不久的將來,你需要透過爬取和挖掘來獲得一些你需要的資料,當然你幾乎肯定需要進行一點點的程式設計來正確的獲取。你要怎麼做取決於你自己,但是我發現 Python 社群是一個很好的提供者,它提供了工具、框架以及文件來幫助你從網站上獲取資料。

在我們進行之前,這裡有一個小小的請求:在你做事情之前請思考,以及請耐心。抓取這件事情並不簡單。不要把網站爬下來只是複製一遍,並其它人的工作當成是你自己的東西(當然,沒有許可)。要注意版權和許可,以及你所爬行的內容應用哪一個標準。尊重 robots.txt 檔案。不要頻繁的針對一個網站,這將導致真實的訪問者會遇到訪問困難的問題。

在知曉這些警告之後,這裡有一些很棒的 Python 網站爬蟲工具,你可以用來獲得你需要的資料。

Pyspider

讓我們先從 pyspider 開始介紹。這是一個帶有 web 介面的網路爬蟲,讓與使之容易跟蹤多個爬蟲。其具有擴充套件性,支援多個後端資料庫和訊息佇列。它還具有一些方便的特性,從優先順序到再次訪問抓取失敗的頁面,此外還有透過時間順序來爬取和其他的一些特性。Pyspider 同時支援 Python 2 和 Python 3。為了實現一個更快的爬取,你可以在分散式的環境下一次使用多個爬蟲進行爬取。

Pyspyder 的基本用法都有良好的 文件說明 ,包括簡單的程式碼片段。你能透過檢視一個 線上的樣例 來體驗使用者介面。它在 Apache 2 許可證下開源,Pyspyder 仍然在 GitHub 上積極地開發。

MechanicalSoup

MechanicalSoup 是一個基於極其流行而異常多能的 HTML 解析庫 Beautiful Soup 建立的爬蟲庫。如果你的爬蟲需要相當的簡單,但是又要求檢查一些選擇框或者輸入一些文字,而你又不想為這個任務單獨寫一個爬蟲,那麼這會是一個值得考慮的選擇。

MechanicalSoup 在 MIT 許可證下開源。檢視 GitHub 上該專案的 example.py 樣例檔案來獲得更多的用法。不幸的是,到目前為止,這個專案還沒有一個很好的文件。

Scrapy

Scrapy 是一個有著活躍社群支援的抓取框架,在那裡你可以建造自己的抓取工具。除了爬取和解析工具,它還能將它收集的資料以 JSON 或者 CSV 之類的格式輕鬆輸出,並儲存在一個你選擇的後端資料庫。它還有許多內建的任務擴充套件,例如 cookie 處理、代理欺騙、限制爬取深度等等,同時還可以建立你自己附加的 API。

要了解 Scrapy,你可以檢視網上的文件或者是訪問它諸多的社群資源,包括一個 IRC 頻道、Reddit 子版塊以及關注他們的 StackOverflow 標籤。Scrapy 的程式碼在 3 句版 BSD 許可證下開源,你可以在 GitHub 上找到它們。

如果你完全不熟悉程式設計,Portia 提供了一個易用的視覺化的介面。scrapinghub.com 則提供一個託管的版本。

其它

  • Cola 自稱它是個“高階的分散式爬取框架”,如果你在尋找一個 Python 2 的方案,這也許會符合你的需要,但是注意它已經有超過兩年沒有更新了。
  • Demiurge 是另一個可以考慮的潛在候選者,它同時支援 Python 2和 Python 3,雖然這個專案的發展較為緩慢。
  • 如果你要解析一些 RSS 和 Atom 資料,Feedparser 或許是一個有用的專案。
  • Lassie 讓從網站檢索像說明、標題、關鍵詞或者是圖片一類的基本內容變得簡單。
  • RoboBrowser 是另一個簡單的庫,它基於 Python 2 或者 Python 3,它具有按鈕點選和表格填充的基本功能。雖然它有一段時間沒有更新了,但是它仍然是一個不錯的選擇。

這遠不是一個完整的列表,當然,如果你是一個程式設計專家,你可以選擇採取你自己的方法而不是使用這些框架中的一個。或者你發現一個用其他語言編寫的替代品。例如 Python 程式設計者可能更喜歡 Python 附帶的 Selenium,它可以在不使用實際瀏覽器的情況下進行爬取。如果你有喜歡的爬取和挖掘工具,請在下面評論讓我們知道。

(題圖:You as a Machine. Modified by Rikki Endsley. CC BY-SA 2.0


via: https://opensource.com/resources/python/web-scraper-crawler

作者:Jason Baker 譯者:ZH1122 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

相關文章