三種 Python 網路內容抓取工具與爬蟲
運用這些很棒的 Python 爬蟲工具來獲取你需要的資料。
在一個理想的世界裡,你需要的所有資料都將以公開而文件完備的格式清晰地展現,你可以輕鬆地下載並在任何你需要的地方使用。
然而,在真實世界裡,資料是凌亂的,極少被打包成你需要的樣子,要麼經常是過期的。
你所需要的資訊經常是潛藏在一個網站裡。相比一些清晰地、有調理地呈現資料的網站,更多的網站則不是這樣的。爬取資料、挖掘資料、加工資料、整理資料這些是獲取整個網站結構來繪製網站拓撲來收集資料所必須的活動,這些可以是以網站的格式儲存的或者是儲存在一個專有資料庫中。
也許在不久的將來,你需要透過爬取和挖掘來獲得一些你需要的資料,當然你幾乎肯定需要進行一點點的程式設計來正確的獲取。你要怎麼做取決於你自己,但是我發現 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
相關文章
- Python爬蟲,抓取淘寶商品評論內容!Python爬蟲
- Python 爬蟲網頁內容提取工具xpath(二)Python爬蟲網頁
- Python 爬蟲網頁內容提取工具xpath(一)Python爬蟲網頁
- python爬蟲:使用BeautifulSoup修改網頁內容Python爬蟲網頁
- 網路爬蟲之抓取郵箱爬蟲
- 利用Python網路爬蟲抓取網易雲音樂歌詞Python爬蟲
- 爬蟲,可用於增加訪問量和抓取網站全頁內容爬蟲網站
- 網路爬蟲抓取邊界的法律與技術思考爬蟲
- python 爬蟲如何爬取動態生成的網頁內容Python爬蟲網頁
- [Python] 網路爬蟲與資訊提取(1) 網路爬蟲之規則Python爬蟲
- python網路爬蟲_Python爬蟲:30個小時搞定Python網路爬蟲視訊教程Python爬蟲
- 寫網路爬蟲程式的三種難度爬蟲
- python網路爬蟲應用_python網路爬蟲應用實戰Python爬蟲
- ScienceDirect內容爬蟲爬蟲
- 簡單的爬蟲:爬取網站內容正文與圖片爬蟲網站
- 爬蟲抓取網路資料時經常遇到的六種問題爬蟲
- python DHT網路爬蟲Python爬蟲
- Python爬蟲抓取股票資訊Python爬蟲
- 爬蟲原理與資料抓取爬蟲
- 用Python爬蟲抓取代理IPPython爬蟲
- 網路爬蟲(python專案)爬蟲Python
- 專案--python網路爬蟲Python爬蟲
- python網路爬蟲合法嗎Python爬蟲
- Python網路爬蟲實戰Python爬蟲
- 《Python3網路爬蟲開發實戰(第二版)》內容介紹Python爬蟲
- python網路爬蟲(14)使用Scrapy搭建爬蟲框架Python爬蟲框架
- [網路爬蟲] Jsoup : HTML 解析工具爬蟲JSHTML
- 如何利用Python網路爬蟲抓取微信朋友圈的動態(上)Python爬蟲
- 什麼是Python網路爬蟲?常見的網路爬蟲有哪些?Python爬蟲
- 三國演義內容抓取(詩詞名句網)
- 爬蟲抓取網頁資料原理爬蟲網頁
- Python網路爬蟲抓取動態網頁並將資料存入資料庫MYSQLPython爬蟲網頁資料庫MySql
- python3網路爬蟲開發實戰_Python 3開發網路爬蟲(一)Python爬蟲
- JB的Python之旅-爬蟲篇-新浪微博內容爬取Python爬蟲
- Python爬蟲爬取B站up主所有動態內容Python爬蟲
- python網路爬蟲(9)構建基礎爬蟲思路Python爬蟲
- 網路爬蟲如何獲取IP進行資料抓取爬蟲
- Python爬蟲抓取技術的門道Python爬蟲
- python網路爬蟲筆記(一)Python爬蟲筆記