市面上常見的開源爬蟲對比與小型采訪【安安課堂筆記】

圖片1

世界上已經成型的爬蟲軟件多達上百種,本文對較為知名及常見的開源爬蟲軟件進行梳理,按開發語言進行匯總,如下表所示。 PS:雖然搜索引擎也有爬蟲,但本次匯總的只是爬蟲軟件,而非大型、復雜的搜索引擎。

圖片2

Java爬蟲

1. Arachnid

特點:微型爬蟲框架,含有一個小型HTML解析器

2、crawlzilla

特點:安裝簡易,擁有中文分詞功能

3、Ex-Crawler

特點:由守護進程執行,使用數據庫存儲網頁信息

4、Heritrix 特點:嚴格遵照robots文件的排除指示和META robots標簽

5、heyDr 特點:輕量級開源多線程垂直檢索爬蟲框架

6、ItSucks 特點:提供swing GUI操作界面

7、jcrawl 特點:輕量、性能優良,可以從網頁抓取各種類型的文件

8、JSpider 特點:功能強大,容易擴展

9、Leopdo 特點:包括全文和分類垂直搜索,以及分詞系統

10、MetaSeeker 特點:網頁抓取、信息提取、數據抽取工具包,操作簡單

11、Playfish 特點:通過XML配置文件實現高度可定制性與可擴展性

12、Spiderman 特點:靈活、擴展性強,微內核+插件式架構,通過簡單的配置就可以完成數據抓取,無需編寫一句代碼

13、webmagic 特點:功能覆蓋整個爬蟲生命周期,使用Xpath和正則表達式進行鏈接和內容的提取

14、Web-Harvest 特點:運用XSLT、XQuery、正則表達式等技術來實現對Text或XML的操作,具有可視化的界面

15、WebSPHINX 特點:由兩部分組成:爬蟲工作平臺和WebSPHINX類包

16、YaCy 特點:基于P2P的分布式Web搜索引擎

Python爬蟲

17、QuickRecon 特點:具有查找子域名名稱、收集電子郵件地址并尋找人際關系等功能

18、PyRailgun 特點:簡潔、輕量、高效的網頁抓取框架

19、Scrapy 特點:基于Twisted的異步處理框架,文檔齊全

C++爬蟲

20、hispider 特點:支持多機分布式下載, 支持網站定向下載

21、larbin 特點:高性能的爬蟲軟件,只負責抓取不負責解析

22、Methabot 特點:過速度優化、可抓取WEB、FTP及本地文件系統

C#爬蟲

23、NWebCrawler 特點:統計信息、執行過程可視化

24、Sinawler 特點:國內第一個針對微博數據的爬蟲程序,功能強大

25、spidernet 特點:以遞歸樹為模型的多線程web爬蟲程序,支持以GBK (gb2312)和utf8編碼的資源,使用sqlite存儲數據

26、Web Crawler 特點:多線程,支持抓取PDF/DOC/EXCEL等文檔來源

27、網絡礦工 特點:功能豐富,毫不遜色于商業軟件

PHP爬蟲

28、OpenWebSpider 特點:開源多線程網絡爬蟲,有許多有趣的功能

29、PhpDig 特點:具有采集網頁內容、提交表單功能

30、ThinkUp 特點:采集推特、臉譜等社交網絡數據的社會媒體視角引擎,可進行交互分析并將結果以可視化形式展現

31、微購 特點:可采集淘寶、京東、當當等300多家電子商務數據

32、Ebot 特點:可伸縮的分布式網頁爬蟲

Ruby爬蟲

33、Spidr 特點:可將一個或多個網站、某個鏈接完全抓取到本地

安 安 采 訪 筆 記

對于爬蟲君的功能來說,我們比較關心的問題往往是……

采訪人:安安 被采訪人:爬蟲君代表

圖片4

  • 爬蟲君支持多線程么?能用代理么?爬蟲君會爬取重復數據么?能爬取JS生成的信息么?

不支持多線程、不支持代理、不能過濾重復URL的,那都不叫開源爬蟲,那叫循環執行http請求。

能不能爬js生成的信息和爬蟲本身沒有太大關系。爬蟲主要是負責遍歷網站和下載頁面。爬js生成的信息和網頁信息抽取模塊有關,往往需要通過模擬瀏覽器(htmlunit,selenium)來完成。這些模擬瀏覽器,往往需要耗費很多的時間來處理一個頁面。

所以一種策略就是,使用這些爬蟲來遍歷網站,遇到需要解析的頁面,就將網頁的相關信息提交給模擬瀏覽器,來完成JS生成信息的抽取。


  • 爬蟲君可以爬取ajax信息么?

網頁上有一些異步加載的數據,爬取這些數據有兩種方法:使用模擬瀏覽器(問題1中描述過了),或者分析ajax的http請求,自己生成ajax請求的url,獲取返回的數據。如果是自己生成ajax請求,使用開源爬蟲的意義在哪里?其實是要用開源爬蟲的線程池和URL管理功能(比如斷點爬?。?。

如果我已經可以生成我所需要的ajax請求(列表),如何用這些爬蟲來對這些請求進行爬???

爬蟲往往都是設計成廣度遍歷或者深度遍歷的模式,去遍歷靜態或者動態頁面。爬取ajax信息屬于deep web(深網)的范疇,雖然大多數爬蟲都不直接支持。但是也可以通過一些方法來完成。比如WebCollector使用廣度遍歷來遍歷網站。爬蟲的第一輪爬取就是爬取種子集合(seeds)中的所有url。

簡單來說,就是將生成的ajax請求作為種子,放入爬蟲。用爬蟲對這些種子,進行深度為1的廣度遍歷(默認就是廣度遍歷)。


  • 爬蟲君怎么爬取要登陸的網站?

這些開源爬蟲都支持在爬取時指定cookies,模擬登陸主要是靠cookies。至于cookies怎么獲取,不是爬蟲管的事情。你可以手動獲取、用http請求模擬登陸或者用模擬瀏覽器自動登陸獲取cookie。


  • 爬蟲君怎么抽取網頁的信息?

開源爬蟲一般都會集成網頁抽取工具。主要支持兩種規范:CSS SELECTOR和XPATH。至于哪個好,這里不評價。


  • 爬蟲君怎么保存網頁的信息?

有一些爬蟲,自帶一個模塊負責持久化。比如webmagic,有一個模塊叫pipeline。通過簡單地配置,可以將爬蟲抽取到的信息,持久化到文件、數據庫等。

還有一些爬蟲,并沒有直接給用戶提供數據持久化的模塊,比如crawler4j和webcollector,而是讓用戶自己在網頁處理模塊中添加提交數據庫的操作。至于使用pipeline這種模塊好不好,就和操作數據庫使用ORM好不好這個問題類似,取決于你的業務。


  • 爬蟲君被網站封了怎么辦?

爬蟲被網站封了,一般用多代理(隨機代理)就可以解決。但是這些開源爬蟲一般沒有直接支持隨機代理的切換。所以用戶往往都需要自己將獲取的代理,放到一個全局數組中,自己寫一個代理隨機獲?。◤臄到M中)的代碼。


  • 網頁可以調用爬蟲君么?

爬蟲的調用是在Web的服務端調用的,平時怎么用就怎么用,這些爬蟲都可以使用。


  • 爬蟲君速度怎么樣?

單機開源爬蟲的速度,基本都可以講本機的網速用到極限。爬蟲的速度慢,往往是因為用戶把線程數開少了、網速慢,或者在數據持久化時,和數據庫的交互速度慢。而這些東西,往往都是用戶的機器和二次開發的代碼決定的。這些開源爬蟲的速度,都很可以。


  • 明明代碼寫對了,爬不到數據,是不是爬蟲君有問題,換個爬蟲小代表能解決么?

如果代碼寫對了,又爬不到數據,換其他爬蟲也是一樣爬不到。遇到這種情況,要么是網站把你封了,要么是你爬的數據是javascript生成的。爬不到數據通過換爬蟲是不能解決的。


  • 哪個爬蟲君可以判斷網站是否爬完、哪個爬蟲君可以根據主題進行爬???

爬蟲無法判斷網站是否爬完,只能盡可能覆蓋。 至于根據主題爬取,爬蟲之后把內容爬下來才知道是什么主題。所以一般都是整個爬下來,然后再去篩選內容。如果嫌爬的太泛,可以通過限制URL正則等方式,來縮小一下范圍。

  • 哪個爬蟲君的設計模式和構架比較好? 設計模式純屬扯淡。說軟件設計模式好的,都是軟件開發完,然后總結出幾個設計模式。設計模式對軟件開發沒有指導性作用。用設計模式來設計爬蟲,只會使得爬蟲的設計更加臃腫。

至于構架,開源爬蟲目前主要是細節的數據結構的設計,比如爬取線程池、任務隊列,這些大家都能控制好。爬蟲的業務太簡單,談不上什么構架。

所以對于JAVA開源爬蟲,我覺得,隨便找一個用的順手的就可以。如果業務復雜,拿哪個爬蟲來,都是要經過復雜的二次開發,才可以滿足需求。


  • 如何防止你們的入侵?

使用專業的風控軟件或平臺可以有效的阻止我們搶灘登陸。以豈安科技為例——豈安科技是專注于為互聯網企業提供業務風控解決方案,場景包括真假用戶識別,惡意爬蟲對,就是我們)、賬號欺詐/盜用、業務欺詐、業務風險控制、交易欺詐監控、惡意訂單、補貼濫用、盜卡盜刷等等,并擁有一系列帶自主知識產權的核心產品。

豈安服務的行業覆蓋互聯網金融、消費金融、電商、云計算、O2O、商旅、游戲等諸多互聯網細分市場。只要在這些行業遇到這些問題,都可以找它們。


  • 請簡單描述。

點擊進入豈安的世界就可以不花一分錢免費試用豈安業務風險情報服務,至于能不能搞定我們……你追我,如果你追到我,我就讓你“嘿嘿嘿” (本文相關總結、回復源自博客博主五岳之巔,知乎用戶老夏、36大數據

圖片3

大发快3