三種 Python 網(wǎng)絡(luò )內容抓取工具與爬蟲(chóng)
優(yōu)采云 發(fā)布時(shí)間: 2020-06-23 08:01運用這種太棒的 Python 爬蟲(chóng)工具來(lái)獲取你須要的數據。
在一個(gè)理想的世界里,你須要的所有數據都將以公開(kāi)而文檔完備的格式清晰地詮釋?zhuān)憧梢暂p松地下載并在任何你須要的地方使用。
然而,在真實(shí)世界里,數據是零亂的,極少被打包成你須要的樣子,要么常常是過(guò)期的。
你所須要的信息常常是埋藏在一個(gè)網(wǎng)站里。相比一些清晰地、有調養地呈現數據的網(wǎng)站,更多的網(wǎng)站則不是這樣的。爬取數據crawling、挖掘數據scraping、加工數據、整理數據那些是獲取整個(gè)網(wǎng)站結構來(lái)勾畫(huà)網(wǎng)站拓撲來(lái)搜集數據所必須的活動(dòng),這些可以是以網(wǎng)站的格式存儲的或則是存放在一個(gè)專(zhuān)有數據庫中。
也許在不久的將來(lái),你須要通過(guò)爬取和挖掘來(lái)獲得一些你須要的數據,當然你幾乎肯定須要進(jìn)行一點(diǎn)點(diǎn)的編程來(lái)正確的獲取。你要如何做取決于你自己,但是我發(fā)覺(jué) Python 社區是一個(gè)挺好的提供者,它提供了工具、框架以及文檔來(lái)幫助你從網(wǎng)站上獲取數據。
在我們進(jìn)行之前,這里有一個(gè)小小的懇求:在你做事情之前請思索,以及請耐心。抓取這件事情并不簡(jiǎn)單。不要把網(wǎng)站爬出來(lái)只是復制一遍,并其它人的工作當作是你自己的東西(當然,沒(méi)有許可)。要注意版權和許可,以及你所爬行的內容應用哪一個(gè)標準。尊重 robots.txt 文件。不要頻繁的針對一個(gè)網(wǎng)站,這將造成真實(shí)的訪(fǎng)問(wèn)者會(huì )碰到訪(fǎng)問(wèn)困難的問(wèn)題。
在知曉那些警告過(guò)后,這里有一些太棒的 Python 網(wǎng)站爬蟲(chóng)工具,你可以拿來(lái)獲得你須要的數據。
讓我們先從 pyspider 開(kāi)始介紹。這是一個(gè)帶有 web 界面的網(wǎng)路爬蟲(chóng),讓與讓之容易跟蹤多個(gè)爬蟲(chóng)。其具有擴展性,支持多個(gè)前端數據庫和消息隊列。它還具有一些便捷的特點(diǎn),從優(yōu)先級到再度訪(fǎng)問(wèn)抓取失敗的頁(yè)面linux 爬蟲(chóng)軟件,此外還有通過(guò)時(shí)間次序來(lái)爬取和其他的一些特點(diǎn)。Pyspider 同時(shí)支持 Python 2 和 Python 3。為了實(shí)現一個(gè)更快的爬取,你可以在分布式的環(huán)境下一次使用多個(gè)爬蟲(chóng)進(jìn)行爬取。
Pyspyder 的基本用法都有良好的 文檔說(shuō)明 ,包括簡(jiǎn)單的代碼片斷。你能通過(guò)查看一個(gè) 在線(xiàn)的樣例 來(lái)體驗用戶(hù)界面。它在 Apache 2 許可證下開(kāi)源,Pyspyder 仍然在 GitHub 上積極地開(kāi)發(fā)。
MechanicalSoup 是一個(gè)基于非常流行而異常多能的 HTML 解析庫 Beautiful Soup 建立的爬蟲(chóng)庫。如果你的爬蟲(chóng)須要相當的簡(jiǎn)單,但是又要求檢測一些選擇框或則輸入一些文字,而你又不想為這個(gè)任務(wù)單獨寫(xiě)一個(gè)爬蟲(chóng),那么這會(huì )是一個(gè)值得考慮的選擇。
MechanicalSoup 在 MIT 許可證下開(kāi)源。查看 GitHub 上該項目的 example.py 樣例文件來(lái)獲得更多的用法。不幸的是,到目前為止,這個(gè)項目還沒(méi)有一個(gè)挺好的文檔。
Scrapy 是一個(gè)有著(zhù)活躍社區支持的抓取框架,在那里你可以建造自己的抓取工具。除了爬取和解析工具,它能夠將它搜集的數據以 JSON 或者 CSV 之類(lèi)的格式輕松輸出,并儲存在一個(gè)你選擇的前端數據庫。它還有許多外置的任務(wù)擴充linux 爬蟲(chóng)軟件,例如 cookie 處理、代理誤導、限制爬取深度等等,同時(shí)還可以構建你自己附加的 API。
要了解 Scrapy,你可以查看網(wǎng)上的文檔或則是訪(fǎng)問(wèn)它眾多的社區資源,包括一個(gè) IRC 頻道、Reddit 子版塊以及關(guān)注她們的 StackOverflow 標簽。Scrapy 的代碼在 3 句版 BSD 許可證下開(kāi)源,你可以在 GitHub 上找到它們。
如果你完全不熟悉編程,Portia 提供了一個(gè)易用的可視化的界面。 則提供一個(gè)托管的版本。
這遠不是一個(gè)完整的列表,當然,如果你是一個(gè)編程專(zhuān)家,你可以選擇采取你自己的方式而不是使用這種框架中的一個(gè)?;蛘吣惆l(fā)覺(jué)一個(gè)用其他語(yǔ)言編撰的替代品。例如 Python 編程者可能更喜歡 Python 附帶的Selenium,它可以在不使用實(shí)際瀏覽器的情況下進(jìn)行爬取。如果你有喜歡的爬取和挖掘工具,請在下邊評論使我們曉得。
?。}圖:You as a Machine. Modified by Rikki Endsley. CC BY-SA 2.0)
via: /resources/python/web-scraper-crawler


