開源爬蟲javascript
開發語言
|
軟件名稱
|
軟件介紹
|
許可證
|
Java
|
Arachnid | 微型爬蟲框架,含有一個小型 HTML 解析器。是一個基於Java的web spider框架.它包含一個簡單的HTML剖析器可以分析包含HTML內容的輸入流.經過實現Arachnid的子類就可以開發一個簡單的Web spiders並可以在Web站上的每一個頁面被解析以後增長几行代碼調用。 Arachnid的下載包中包含兩個spider應用程序例子用於演示如何使用該框架。 http://arachnid.sourceforge.net/ |
GPL |
crawlzilla | 安裝簡易,擁有中文分詞功能。 | Apache2 | |
Ex-Crawler | 由守護進程執行,使用數據庫存儲網頁信息。 | GPLv3 | |
Heritrix | 一個互聯網檔案館級的爬蟲,設計的目標是對大型網絡的大部份內容的按期存檔快照,用 java 編寫。嚴格遵守 robots 文件的排除指示和 META robots 標籤。http://crawler.archive.org/ | LGPL | |
heyDr | 輕量級開源多線程垂直檢索爬蟲框架。 | GPLv3 | |
ItSucks | ItSucks是一個java web spider(web機器人,爬蟲)開源項目。支持經過下載模板和正則表達式來定義下載規則。提供一個swing GUI操做界面。下載地址:http://itsucks.sourceforge.net/ | 不詳 | |
jcrawl | 輕量、性能優良,能夠從網頁抓取各類類型的文件。 | Apache | |
JSpider | 在 GPL 許可下發行,高度可配置、可定製、功能強大、容易擴展的網絡爬蟲引擎。你能夠利用它來檢查網站的錯誤(內在的服務器錯誤等),網站內外部連接檢查,分析網站的結構(可建立一個網站地圖),下載整個Web站點,你還能夠寫一個JSpider插件來擴展你所須要的功能。 | LGPL | |
Leopdo | 包括全文和分類垂直搜索,以及分詞系統。 | Apache | |
MetaSeeker | 網頁抓取、信息提取、數據抽取工具包,操做簡單。 | 不詳 | |
Playfish | 經過 XML 配置文件實現高度可定製性與可擴展性。 | MIT | |
Spiderman | 靈活、擴展性強,微內核+插件式架構,經過簡單的配置就能夠完成數據抓取,無需編寫一句代碼。 | Apache | |
webmagic | 功能覆蓋整個爬蟲生命週期,使用 Xpath 和正則表達式進行連接和內容的提取。 | Apache | |
Web-Harvest | 運用 XSLT、XQuery、正則表達式等技術來實現對 Text 或 XML 的操做,具備可視化的界面。Web-Harvest是一個Java開源Web數據抽取工具。它可以收集指定的Web頁面並從這些頁面中提取有用的數據。 http://web-harvest.sourceforge.net |
BSD | |
WebSPHINX | (Miller and Bharat, 1998) 由 java 類庫構成,基於文本的搜索引擎。它使用多線程進行網頁檢索,html 解析,擁有一個圖形用戶界面用來設置開始的種子 URL 和抽取下載的數據;WebSPHINX 由兩部分組成:爬蟲工做平臺和 WebSPHINX 類包。由兩部分組成:爬蟲工做平臺和WebSPHINX類包。 http://www.cs.cmu.edu/~rcm/websphinx/ |
Apache | |
YaCy | 基於 P2P 網絡的免費分佈式 Web 搜索引擎(在 GPL 許可下發行)。其核心是分佈在數百臺計算機上的被稱 爲YaCy-peer的計算機程序,基於P2P網絡構成了YaCy網絡,整個網絡是一個分散的架構,在其中全部的YaCy-peers都處於對等的地位, 沒有統一的中心服務器,每一個YaCy-peer都能獨立的進行互聯網的爬行抓取、分析及建立索引庫,經過P2P網絡與其餘YaCy-peers進行共享, 而且每一個YaCy-peer又都是一個獨立的代理服務器,可以對本機用戶使用過的網頁進行索引,而且採起多機制來保護用戶的隱私,同時用戶也經過本機運行 的Web服務器進行查詢及返回查詢結果。 YaCy搜索引擎主要包括五個部分,除普通搜索引擎所具備的爬行器、索引器、反排序的索引庫外,它還包括了一個很是豐富的搜索與管理界面以及用於數據共享的P2P網絡。 |
GPL | |
Nutch | 用 java 編寫,在 Apache 許可下發行的爬蟲。它能夠用來鏈接 Lucene 的全文檢索套件。Nutch是Lucene的做者Doug Cutting發起的另外一個開源項目,它是構建於Lucene基礎上的完整的Web搜索引擎系統,雖然誕生時間不長,但卻以其優良血統及簡潔方便的使用方 式而廣收歡迎。咱們能夠使用Nutch搭建相似Google的完整的搜索引擎系統,進行局域網、互聯網的搜索。 | Apache | |
Agent Kernel | 當一個爬蟲抓取時,用來進行安排,併發和存儲的 java 框架。 | / | |
Dine | 一個多線程的 java 的 http 客戶端。它能夠在 LGPL 許可下進行二次開發。 | LGPL | |
Python
|
QuickRecon | 具備查找子域名名稱、收集電子郵件地址並尋找人際關係等功能。 | GPLv3 |
PyRailgun | 簡潔、輕量、高效的網頁抓取框架。 | MIT | |
Scrapy | 基於 Twisted 的異步處理框架,文檔齊全。 | BSD | |
Ruya | 一個在廣度優先方面表現優秀,基於等級抓取的開放源代碼的網絡爬蟲。在英語和日語頁面的抓取表現良好,它在 GPL 許可下發行,而且徹底用 Python 編寫。按照 robots.txt 有一個延時的單網域延時爬蟲。 | GPL | |
PySipder | PySipder 是一個 Python 爬蟲程序。演示地址:http://demo.pyspider.org/。使用 Python 編寫腳本,分佈式架構,提供強大的 API,支持 Python 2&3、支持 JavaScript 頁面。強大的 WebUI 和腳本編輯器、任務監控和項目管理和結果查看。後端系統支持:MySQL、MongoDB、SQLite、Postgresql。支持任務優先級、重試、按期抓取等。 | ||
C
|
GNU Wget | 一個在 GPL 許可下用 C 語言編寫的命令行式的爬蟲。主要用於網絡服務器和 FTP 服務器的鏡像。 | GPL |
HTTrack | HTTrack 用網絡爬蟲建立網絡站點鏡像,以便離線觀看。它使用 C 語言編寫,在 GPL 許可下發行。 | GPL | |
Methabot | 用 C 語言編寫,高速優化,可以使用命令行方式運行,在 2-clause BSD 許可下發布的網頁檢索器。它的主要的特性是高可配置性,模塊化;它檢索的目標能夠是本地文件系統,HTTP 或者 FTP。2013後再也不更新。 | BSD | |
Pavuk | 在 GPL 許可下發行,使用命令行的 WEB 站點鏡像工具,能夠選擇使用 X11 的圖形界面。與 wget 和 httprack 相比,他有一系列先進特性,如以正則表達式爲基礎的文件過濾規則和文件建立規則。2013後再也不更新。 | GPL | |
C++
|
hispider | 支持多機分佈式下載,支持網站定向下載。嚴格說只能是一個spider系統的框架, 沒有細化需求, 目前只是能提取URL, URL排重, 異步DNS解析, 隊列化任務, 支持N機分佈式下載, 支持網站定向下載(須要配置hispiderd.ini whitelist). | BSD |
larbin | 高性能的爬蟲軟件,只負責抓取不負責解析。擁有易於操做的界面,不過只能跑在LINUX下,在一臺普通PC下larbin天天能夠爬5百萬個頁面(固然啦,須要擁有良好的網絡), 2013年後已中止維護. http://larbin.sourceforge.net/index-eng.html |
GPL | |
ICDL Crawler | 用 C++ 編寫,跨平臺的網絡爬蟲。它僅僅使用空閒 CPU 資源,在 ICDL 標準上抓取整個站點。 | / | |
Methanol | 模塊化、可定製的網頁爬蟲,速度快。 | 不詳 | |
WIRE | 網絡信息檢索環境 (Baeza-Yates 和 Castillo, 2002) 用 C++ 編寫,在 GPL 許可下發行的爬蟲,內置了幾種頁面下載安排的策略,還有一個生成報告和統計資料的模塊,因此,它主要用於網絡特徵的描述。 | GPL | |
C#
|
NWebCrawler | 統計信息、執行過程可視化。 | GPLv2 |
Sinawler | 國內第一個針對微博數據的爬蟲程序,功能強大。 | GPLv3 | |
spidernet | 以遞歸樹爲模型的多線程 web 爬蟲程序,支持以 GBK (gb2312) 和 utf8 編碼的資源,使用 sqlite 存儲數據。 | MIT | |
Web Crawler | 爲 .net 準備的開放源代碼的網絡檢索器。多線程,支持抓取 PDF/DOC/EXCEL 等文檔來源。http://www.ideagrace.com/sf/web-crawler/ | LGPL | |
網絡礦工 | 功能豐富,絕不遜色於商業軟件。 | BSD | |
Arachnod.net | 是一個使用C#編寫,須要SQL Server 2005支持的,在GPL許可下發行的多功能的開源的機器人。它能夠用來下載,檢索,存儲包括電子郵件地址,文件,超連接,圖片和網頁在內的各類數據。 | ||
PHP
|
OpenWebSpider | 開源多線程網絡爬蟲,有許多有趣的功能。 | 不詳 |
PhpDig | 適用於專業化強、層次更深的個性化搜索引擎。PHPdig是國外很是流行的垂直搜索引擎產品(與其說是產品,不如說是一項區別於傳統搜索引擎的搜索技術),採用PHP語言編寫,利用了PHP程序運行 的高效性,極大地提升了搜索反應速度,它能夠像Google或者Baidu以及其它搜索引擎同樣搜索互聯網,搜索內容除了普通的網頁外還包括txt, doc, xls, pdf等各式的文件,具備強大的內容搜索和文件解析功能。 | GPL | |
Snoopy | 具備採集網頁內容、提交表單功能。 | GPL | |
ThinkUp | 採集推特、臉譜等社交網絡數據的社會媒體視角引擎,可進行交互分析並將結果以可視化形式展示。 | GPL | |
微購 | 可採集淘寶、京東、噹噹、等 300 多家電子商務數據。 | GPL | |
ErLang
|
Ebot | 可伸縮的分佈式網頁爬蟲。 | GPLv3 |
Ruby
|
Spidr | 可將一個或多個網站、某個連接徹底抓取到本地。 | MIT |
Perl
|
LWP:RobotUA | (Langheinrich, 2004) 是一個在 Perl5 許可下發行的,能夠優異的完成並行任務的 Perl 類庫構成的機器人。 | Perl5 |
其它
|
DataparkSearch | 一個在 GNU GPL 許可下發布的爬蟲搜索引擎。 | GPL |
Ht://Dig | 在它和索引引擎中包括一個網頁爬蟲。 | / | |
LLarbin | LLarbin 由 Sebastien Ailleret 開發。 | / | |
Webtools4larbin | Webtools4larbin 由 Andreas Beder 開發。 | / | |
WebVac | 斯坦福 WebBase 項目使用的一個爬蟲。 | / | |
Sherlock Holmes | 收集和檢索本地和網絡上的文本類數據(文本文件,網頁),該項目由捷克門戶網站中樞(Czech web portal Centrum)贊助而且主要用於商用。 | / | |
Universal Information Crawler | 快速發展的網絡爬蟲,用於檢索存儲和分析數據。 | / |
其它爬蟲php
開發語言
|
軟件名稱
|
做者 | 發佈時間 |
軟件介紹
|
許可證
|
/ | RBSE | Eichmann | 1994 年 | 第一個發佈的爬蟲。它有 2 個基礎程序。第一個是 「spider」,抓取隊列中的內容到一個關係數據庫中,第二個程序是 「mite」,是一個修改後的 www 的 ASCII 瀏覽器,負責從網絡上下載頁面。 | |
/ | Web Crawler | Pinkerton | 1994 年 | 是第一個公開可用的用來創建全文索引的一個子程序,他使用庫 www 來下載頁面;另一個程序使用廣度優先來解析獲取 URL 並對其排序;它還包括一個根據選定文本和查詢類似程度爬行的實時爬蟲。 | |
/ | World Wide Web Worm | McBryan | 1994 年 | 用來爲文件創建包括標題和URL 簡單索引的爬蟲。索引能夠經過 grep 式的 Unix 命令來搜索。 | |
C++、Python | Google Crawler | Brin and Page | 1998 年 | 用了一些細節來描述,可是這些細節僅僅是關於使用 C++ 和 Python 編寫的、一個早期版本的體系結構。由於文本解析就是全文檢索和 URL 抽取的過程,因此爬蟲集成了索引處理。這裏擁有一個 URL 服務器,用來給幾個爬蟲程序發送要抓取的 URL 列表。在解析文本時,新發現的 URL 傳送給 URL 服務器並檢測這個 URL 是否是已經存在,若是不存在的話,該URL 就加入到 URL 服務器中。 | |
Perl | CobWeb | da Silva et al. | 1999 年 | 使用了一箇中央 「調度者」 和一系列的 「分佈式蒐集者」。蒐集者解析下載的頁面並把找到的 URL 發送給調度者,而後調度者反過來分配給蒐集者。調度者使用深度優先策略,而且使用平衡禮貌策略來避免服務器超載。爬蟲是使用 Perl 語言編寫的。 | |
Java | Mercator | Heydon and Najork | 1999 年 | 一個分佈式的,模塊化的使用 java 編寫的網絡爬蟲。它的模塊化源自於使用可互換的 「協議模塊」 和 「處理模塊」。協議模塊負責怎樣獲取網頁(譬如:使用 HTTP),處理模塊負責怎樣處理頁面。標準處理模塊僅僅包括瞭解析頁面和抽取 URL,其餘處理模塊能夠用來檢索文本頁面,或者蒐集網絡數據。 | |
Java | Mercator | Najork and Heydon | 2001 年 | 一個分佈式的,模塊化的使用 java 編寫的網絡爬蟲。它的模塊化源自於使用可互換的 「協議模塊」 和 「處理模塊」。協議模塊負責怎樣獲取網頁(譬如:使用 HTTP),處理模塊負責怎樣處理頁面。標準處理模塊僅僅包括瞭解析頁面和抽取 URL,其餘處理模塊能夠用來檢索文本頁面,或者蒐集網絡數據。 | |
C++ | WebFountain | Edwards et al. | 2001 年 | 一個與 Mercator 相似的分佈式的模塊化的爬蟲,但使用 C++ 編 寫。它的特色是一個管理員機器控制一系列的螞蟻機器。通過屢次下載頁面後,頁面的變化率能夠推測出來,這時,一個非線性的方法必須用於求解方程以得到一個 最大的新鮮度的訪問策略。做者推薦在早期檢索階段使用這個爬蟲,而後用統一策略檢索,就是全部的頁面都使用相同的頻率訪問。 | |
C++、Python | PolyBot | Shkapenyuk and Suel | 2002 年 | 一個使用 C++ 和 Python 編寫的分佈式網絡爬蟲。它由一個爬蟲管理者,一個或多個下載者,一個或多個 DNS 解析者組成。抽取到的 URL 被添加到硬盤的一個隊列裏面,而後使用批處理的模式處理這些 URL。平衡禮貌方面考慮到了第 二、3 級網域,由於第 3 級網域一般也會保存在同一個網絡服務器上。 | |
Java | WebRACE | Zeinalipour-Yazti and Dikaiakos | 2002 年 | 一個使用 java 實現的,擁有檢索模塊和緩存模塊的爬蟲,它是一個很通用的稱做 eRACE 的系統的一部分。系統從用戶獲得下載頁面請求,爬蟲行爲有點像一個聰明的代理服務器。系統還監視訂閱網頁請求,當網頁發生改變時,它必須使爬蟲下載更新這個頁面而且通知訂閱者。WebRACE 最大的特點是,當大多數的爬蟲都從一組 URL 開始時,WebRACE 可連續接收抓取開始的 URL 地址。 | |
/ | FAST Crawler | Risvik and Michelsen | 2002 年 | 一個分佈式爬蟲,在 Fast Search & Transfer 中使用,關於其體系結構的一個大體的描述能夠在 [citation needed] 找到。 | |
/ | Cho | Cho and Garcia-Molina | 2002 年 | 通常爬蟲體系結構。 | |
/ | Chakrabarti | Chakrabarti | 2003 年 | 通常爬蟲體系結構。 | |
Java | Ubicrawe | Boldi et al. | 2004 年 | 一個使用 java 編寫的分佈式爬蟲。它沒有中央程序。它有一組徹底相同的代理組成,分配功能經過主機先後一致的散列計算進行。這裏沒有重複的頁面,除非爬蟲崩潰了(而後,另一個代理就會接替崩潰的代理從新開始抓取)。爬蟲設計爲高伸縮性和容許失敗的。 | |
/ | Labrador | / | / | 一個工做在開源項目 Terrier Search Engine 上的非開源爬蟲。 | |
/ | eezirCrawler | / | / | 一個非開源的可伸縮的網頁抓取器,在 Teezir 上使用。該程序被設計爲一個完整的能夠處理各類類型網頁的爬蟲,包括各類 JavaScript 和 HTML 文檔。爬蟲既支持主題檢索也支持非主題檢索。 | |
Java | Spinn3r | / | / | 一個經過博客構建反饋信息的爬蟲。 Spinn3r 基於 java,它的大部分的體系結構都是開源的。 | |
C、PHP | HotCrawler | / | / | 一個使用 C 語言和 php 編寫的爬蟲。 | |
/ | ViREL Microformats Crawler | / |
WebLech
WebLech是一個功能強大的Web站點下載與鏡像工具。它支持按功能需求來下載web站點並可以儘量模仿標準Web瀏覽器的行爲。WebLech有一個功能控制檯並採用多線程操做。
http://weblech.sourceforge.net/
Arale
Arale主要爲我的使用而設計,而沒有像其它爬蟲同樣是關注於頁面索引。Arale可以下載整個web站點或來自web站點的某些資源。Arale還可以把動態頁面映射成靜態頁面。
http://web.tiscali.it/_flat/arale.jsp.htmlcss
spindle
spindle 是一個構建在Lucene工具包之上的Web索引/搜索工具.它包括一個用於建立索引的HTTP spider和一個用於搜索這些索引的搜索類。spindle項目提供了一組JSP標籤庫使得那些基於JSP的站點不須要開發任何Java類就可以增長搜索功能。
http://www.bitmechanic.com/projects/spindle/
LARM
LARM可以爲Jakarta Lucene搜索引擎框架的用戶提供一個純Java的搜索解決方案。它包含可以爲文件,數據庫表格創建索引的方法和爲Web站點建索引的爬蟲。
http://larm.sourceforge.net/
JoBo
JoBo 是一個用於下載整個Web站點的簡單工具。它本質是一個Web Spider。與其它下載工具相比較它的主要優點是可以自動填充form(如:自動登陸)和使用cookies來處理session。JoBo還有靈活的下載規則(如:經過網頁的URL,大小,MIME類型等)來限制下載。
http://www.matuschek.net/software/jobo/index.html
snoics-reptile
snoics -reptile是用純Java開發的,用來進行網站鏡像抓取的工具,能夠使用配製文件中提供的URL入口,把這個網站全部的能用瀏覽器經過GET的方式獲取到的資源所有抓取到本地,包括網頁和各類類型的文件,如:圖片、flash、mp三、zip、rar、exe等文件。能夠將整個網站完整地下傳至硬盤內,並能保持原有的網站結構精確不變。只須要把抓取下來的網站放到web服務器(如:Apache)中,就能夠實現完整的網站鏡像。
http://www.blogjava.net/snoics
spiderpy
spiderpy是一個基於Python編碼的一個開源web爬蟲工具,容許用戶收集文件和搜索網站,並有一個可配置的界面。
http://pyspider.sourceforge.net/
The Spider Web Network Xoops Mod Team
pider Web Network Xoops Mod是一個Xoops下的模塊,徹底由PHP語言實現。
http://www.tswn.com/
Fetchgals
Fetchgals是一個基於perl多線程的Web爬蟲,經過Tags來搜索色情圖片。
https://sourceforge.net/projects/fetchgals
apache tika。項目地址爲http://tika.apache.org/ 。tika使用解析器從文檔中發現以及提取元數據和文本內容。
php開源網絡爬蟲
二、Sphider is a lightweight web spider and search engine written in PHP, using MySQL as its back end database. It is a great tool for adding search functionality to your web site or building your custom search engine. Sphider is small, easy to set up and modify, and is used in thousands of websites across the world.
Sphider supports all standard search options, but also includes a plethora of advanced features such as word autocompletion, spelling suggestions etc. The sophisticated adminstration interface makes administering the system easy. The full list of Sphider features can be seen in the about section; also be sure to check out the demo and take a look at the showcase, displaying some sites running Sphider. If you run into problems, you can probably get an answer to your question in the forum.
三、iSearch
The iSearch PHP search engine allows you to build a searchable database for your web site. Visitors can search for key words and a list of any pages that match is returned to them.
Introduction
iSearch is a tool for allowing visitors to a website to perform a search on the contents of the site. Unlike other such tools the spidering engine is written in PHP, so it does not require binaries to be run on the server to generate the search index for HTML pages.
C#開源示例
http://www.codeproject.com/useritems/ZetaWebSpider.asp
http://www.codeproject.com/aspnet/Spideroo.asp
http://www.codeproject.com/cs/internet/Crawler.asp
開放源代碼搜索引擎爲人們學習、研究並掌握搜索技術提供了極好的途徑與素材,推進了搜索技術的普及與發展,使愈來愈多的人開始瞭解並推廣使用搜索技術。使用開源搜索引擎,能夠大大縮短構建搜索應用的週期,並可根據應用需求打造個性化搜索應用,甚至構建符合特定需求的搜索引擎系統。搜索引擎的開源,不管是對技術人員仍是普通用戶,都是一個福音。
首先須要一個能訪問網絡的爬蟲器程序,依據URL之間的關聯性自動爬行整個互聯網,並對爬行過的網頁進行抓取收集。當網頁被收集回來後,採用索引分析程序進行網頁信息的分析,依據必定的相關度算法(如超連接算法)進行大量計算,建立倒排序的索引庫。索引庫建好後用戶就能夠經過提供的搜索界面提交關鍵詞進行搜索,依據特定的排序算法返回搜索結果。所以,搜索引擎並非對互聯網進行直接搜索,而是對已抓取網頁索引庫的搜索,這也是能快速返回搜索結果的緣由,索引在其中扮演了最爲重要的角色,索引算法的效率直接影響搜索引擎的效率,是評測搜索引擎是否高效的關鍵因素。
網頁爬行器、索引器、查詢器共同構成了搜索引擎的重要組成單元,針對特定的語言,如中文、韓文等,還須要分詞器進行分詞,通常狀況下,分詞器與索引器一塊兒使用建立特定語言的索引庫。它們之間的協同關係如圖1所示。
而開放源代碼的搜索引擎爲用戶提供了極大的透明性,開放的源代碼、公開的排序算法、隨意的可定製性,相比於商業搜索引擎而言,更爲用戶所須要。目前,開放源代碼的搜索引擎項目也有一些,主要集在中搜索引擎開發工具包與架構、Web搜索引擎、文件搜索引擎幾個方面,本文概要介紹一下當前比較流行且相對比較成熟的幾個搜索引擎項目。
開源搜索引擎工具包
1.Lucene
Lucene是目前最爲流行的開放源代碼全文搜索引擎工具包,隸屬於Apache基金會,由資深全文索引/檢索專家Doug Cutting所發起,並以其妻子的中間名做爲項目的名稱。Lucene不是一個具備完整特徵的搜索應用程序,而是一個專一於文本索引和搜索的工具包,可以爲應用程序添加索引與搜索能力。基於Lucene在索引及搜索方面的優秀表現,雖然由Java編寫的Lucene具備天生的跨平臺性,但仍被改編爲許多其餘語言的版本:Perl、Python、C++、.Net等。
同其餘開源項目同樣,Lucene具備很是好的架構,可以方便地在其基礎上進行研究與開發,添加新功能或者開發新系統。Lucene自己只支持文本文件及少許語種的索引,而且不具有爬蟲功能,而這正是Lucene的魅力所在,經過 Lucene提供的豐富接口,咱們能夠根據自身的須要在其上添加具體語言的分詞器,針對具體文檔的文本解析器等,而這些具體的功能實現均可以藉助於一些已有的相關開源軟件項目、甚至是商業軟件來完成,這也保證了Lucene在索引及搜索方面的專一性。目前,經過在Lucene的基礎上加入爬行器、文本解析器等也造成了一些新的開源項目,如LIUS、Nutch等。而且Lucene的索引數據結構已經成了一種事實上的標準,爲許多搜索引擎所採用。
2.LIUS
LIUS即Lucene Index Update and Search的縮寫,它是以Lucene爲基礎發展起來的一種文本索引框架,和Lucene同樣,一樣能夠看做搜索引擎開發工具包。它在Lucene的基礎上做了一些相應的研究及添加了一些新的功能。LIUS藉助於許多開源軟件,能夠直接對各類不一樣格式/類型的文檔進行文本解析與索引,這些文檔格式包括 MS Word、MS Excel、MS PowerPoing、RTF、PDF、XML、HTML、TXT、Open Office及JavaBeans等,對Java Beans的支持對於進行數據庫索引很是有用,在用戶進行對象關係映射(如:Hibernate、JDO、TopLink、Torque等)的數據庫鏈接編程時會變得更加精確。LIUS還在Lucene的基礎上增長了索引更新功能,使針對索引的維護功能進一步完善。而且支持混和索引,能夠把同一目錄下與某一條件相關的全部內容整合到一塊兒,這種功能對於須要對多種不一樣格式的文檔同時進行索引時很是有用。
3.Egothor
Egothor是一款開源的高性能全文搜索引擎,適用於基於全文搜索功能的搜索應用,它具備與Luccene相似的核心算法,這個項目已經存在了不少年,而且擁有一些積極的開發人員及用戶團體。項目發起者Leo Galambos是捷克布拉格查理大學數學與物理學院的一名高級助理教授,他在博士研究生期間發起了此項目。
更多的時候,咱們把Egothor看做一個用於全文搜索引擎的Java庫,可以爲具體的應用程序添加全文搜索功能。它提供了擴展的Boolean模塊,使得它能被做爲Boolean模塊或者Vector模塊使用,而且Egothor具備一些其餘搜索引擎所不具備的特有功能:它採用新的動態算法以有效提升索引更新的速度,而且支持平行的查詢方式,可有效提升查詢效率。在Egothor的發行版中,加入了爬行器、文本解析器等許多加強易用性的應用程序,融入了Golomb、Elias-Gamma等多種高效的壓縮方法,支持多種經常使用文檔格式的文本解析,如HTML、PDF、PS、微軟Office文檔、XLS等,提供了GUI的索引界面及基於Applet或者Web的查詢方式。另外,Egothor還能被方便地配置成獨立的搜索引擎、元數據搜索器、點對點的HUB等多種且體的應用系統。
4.Xapian
Xapian是基於GPL發佈的搜索引擎開發庫,它採用C++語言編寫,經過其提供綁定程序包能夠使Perl、Python、PHP、Java、Tck、C#、Ruby等語言方便地使用它。
Xapian仍是一個具備高適應性的工具集,使開發人員可以方便地爲他們的應用程序添加高級索引及搜索功能。它支持信息檢索的機率模型及豐富的布爾查詢操做。Xapian的發佈包一般由兩部分組成:xapian-core及xapian- bindings,前者是核心主程序,後者是與其餘語言進行綁定的程序包。
Xapian爲程序開發者提供了豐富的API及文檔進行程序的編制,並且還提供了許多編程實例及一個基於Xapian的應用程序Omega,Omega由索引器及基於CGI的前端搜索組成,可以爲HTML、PHP、PDF、 PostScript、OpenOffice/StarOffice、RTF等多種格式的文檔編制索引,經過使用Perl DBI模塊甚至能爲MySQL、PostgreSQL、SQLite、Sybase、MS SQL、LDAP、ODBC等關係數據庫編制索引,並能以CSV或XML格式從前端導出搜索結果,程序開發者能夠在此基礎上進行擴展。
5.Compass
Compass是在Lucene上實現的開源搜索引擎架構,相對比於Lucene而言,提供更加簡潔的搜索引擎API。增長了索引事務處理的支持,使其可以更方便地與數據庫等事務處理應用進行整合。它更新時無需刪除原文檔,更加簡單更加高效。資源與搜索引擎之間採用映射機制,此種機制使得那些已經使用了Lucene或者不支持對象及XML的應用程序遷移到Compass上進行開發變得很是容易。
Compass還能與Hibernate、Spring等架構進行集成,所以若是想在Hibernate、Spring項目中加入搜索引擎功能,Compass是個極好的選擇。html
開源桌面搜索引擎系統
1.Regain
regain是一款與Web搜索引擎相似的桌面搜索引擎系統,其不一樣之處在於regain 不是對Internet內容的搜索,而是針對本身的文檔或文件的搜索,使用regain能夠輕鬆地在幾秒內完成大量數據(許多個G)的搜索。Regain 採用了Lucene的搜索語法,所以支持多種查詢方式,支持多索引的搜索及基於文件類型的高級搜索,而且能實現URL重寫及文件到HTTP的橋接,而且對中文也提供了較好的支持。
Regain提供了兩種版本:桌面搜索及服務器搜索。桌面搜索提供了對普通桌面計算機的文檔與局域網環境下的網頁的快速搜索。服務器版本主要安裝在Web服務器上,爲網站及局域網環境下的文件服務器進行搜索。
Regain使用Java編寫,所以能夠實現跨平臺安裝,能安裝於Windows、 Linux、Mac OS及Solaris上。服務器版本須要JSPs環境及標籤庫(tag library),所以須要安裝一個Tomcat容器。而桌面版自帶了一個小型的Web服務器,安裝很是簡單。
2.Zilverline
Zilverline是一款以Lucene爲基礎的桌面搜索引擎,採用了Spring框架,它主要用於我的本地磁盤及局域網內容的搜索,支持多種語言,而且具備本身的中文名字:銀錢查打引擎。Zilverline提供了豐富的文檔格式的索引支持,如微軟Office文檔、RTF、Java、CHM等,甚至可以爲歸檔文件編制索引進行搜索,如zip、rar及其餘歸檔文件,在索引過程當中,Zilverline從zip、rar、chm等歸檔文件中抽取文件來編制索引。Zilverline能夠支持增量索引的方式,只對新文件編制索引,同時也支持按期自動索引,其索引庫能被存放於Zilverline可以訪問到的地方,甚至是DVD中。同時,Zilverline還支持文件路徑到URL 的映射,這樣能夠使用戶遠程搜索本地文件。
Zilverline提供了我的及研究、商業應用兩種許可方式,其發佈形式爲一個簡單的 war包,能夠從其官方網站下載(http://www.zilverline.org/)。Zilverline的運行環境須要Java環境及 Servlet容器,通常使用Tomcat便可。在確保正確安裝JDK及Tomcat容器後只需將Zilverline的war包(zilverline-1.5.0.war)拷貝到Tomcat的webapps目錄後重啓Tomcat容器便可開始使用Zilverline搜索引擎了。 前端
爬蟲,即網絡爬蟲,是一種自動獲取網頁內容的程序。是搜索引擎的重要組成部分,所以搜索引擎優化很大程度上就是針對爬蟲而作出的優化。html5
開源爬蟲Labin,Nutch,Neritrix介紹和對比java
從網上找了一些開源spider的相關資料,整理在下面:node
Larbin
開發語言:C++
http://larbin.sourceforge.net/index-eng.html
larbin是個基於C++的web爬蟲工具,擁有易於操做的界面,不過只能跑在LINUX下,在一臺普通PC下larbin天天能夠爬5百萬個頁面(固然啦,須要擁有良好的網絡)python
簡介mysql
Larbin是一種開源的網絡爬蟲/網絡蜘蛛,由法國的年輕人 Sébastien Ailleret獨立開發。larbin目的是可以跟蹤頁面的url進行擴展的抓取,最後爲搜索引擎提供普遍的數據來源。
Larbin只是一個爬蟲,也就是說larbin只抓取網頁,至於如何parse的事情則由用戶本身完成。另外,如何存儲到數據庫以及創建索引的事情 larbin也不提供。
Latbin最初的設計也是依據設計簡單可是高度可配置性的原則,所以咱們能夠看到,一個簡單的larbin的爬蟲能夠天天獲取500萬的網頁,很是高效。
功能
1. larbin 獲取單個、肯定網站的全部聯結,甚至能夠鏡像一個網站。
2. larbin創建 url 列表羣,例如針對全部的網頁進行 url retrive後,進行xml的聯結的獲取。或者是 mp3 。
3. larbin 定製後能夠做爲搜索引擎的信息的來源(例如能夠將抓取下來的網頁每2000一組存放在一系列的目錄結構裏面)。
問題
Labin的主要問題是,:
僅提供保存網頁保存功能,沒有進行進一步的網頁解析;
不支持分佈式系統;
功能相對簡單,提供的配置項也不夠多;
不支持網頁自動重訪,更新功能;
從2003年末之後,Labin已經放棄更新,目前處於荒蕪長草的狀態
Nutch
開發語言:Java
http://lucene.apache.org/nutch/
簡介:
Apache的子項目之一,屬於Lucene項目下的子項目。
Nutch是一個基於Lucene,相似Google的完整網絡搜索引擎解決方案,基於Hadoop的分佈式處理模型保證了系統的性能,相似Eclipse的插件機制保證了系統的可客戶化,並且很容易集成到本身的應用之中。
整體上Nutch能夠分爲2個部分:抓取部分和搜索部分。抓取程序抓取頁面並把抓取回來的數據作成反向索引,搜索程序則對反向索引搜索回答用戶的請求。抓取程序和搜索程序的接口是索引,二者都使用索引中的字段。抓取程序和搜索程序能夠分別位於不一樣的機器上。下面詳細介紹一下抓取部分。
抓取部分:
抓取程序是被Nutch的抓取工具驅動的。這是一組工具,用來創建和維護幾個不一樣的數據結構: web database, a set of segments, and the index。下面逐個解釋這三個不一樣的數據結構:
1、The web database, 或者WebDB。這是一個特殊存儲數據結構,用來映像被抓取網站數據的結構和屬性的集合。WebDB 用來存儲從抓取開始(包括從新抓取)的全部網站結構數據和屬性。WebDB 只是被 抓取程序使用,搜索程序並不使用它。WebDB 存儲2種實體:頁面 和 連接。頁面 表示 網絡上的一個網頁,這個網頁的Url做爲標示被索引,同時創建一個對網頁內容的MD5 哈希簽名。跟網頁相關的其它內容也被存儲,包括:頁面中的連接數量(外連接),頁面抓取信息(在頁面被重複抓取的狀況下),還有表示頁面級別的分數 score。連接 表示從一個網頁的連接到其它網頁的連接。所以 WebDB 能夠說是一個網絡圖,節點是頁面,連接是邊。
2、Segment。這是網頁的集合,而且它被索引。Segment的Fetchlist 是抓取程序使用的url列表,它是從 WebDB中生成的。Fetcher 的輸出數據是從 fetchlist 中抓取的網頁。Fetcher的輸出數據先被反向索引,而後索引後的結果被存儲在segment 中。 Segment的生命週期是有限制的,當下一輪抓取開始後它就沒有用了。默認的 從新抓取間隔是30天。所以刪除超過這個時間期限的segment是能夠的。並且也能夠節省很多磁盤空間。Segment 的命名是日期加時間,所以很直觀的能夠看出他們的存活週期。
3、The index。索引庫是反向索引全部系統中被抓取的頁面,它並不直接從頁面反向索引產生,而是合併不少小的segment的索引產生的。Nutch 使用 Lucene 來創建索引,所以全部Lucene相關的工具 API 都用來創建索引庫。須要說明的是Lucene的segment 的概念和Nutch的segment概念是徹底不一樣的,不要混淆。簡單來講 Lucene 的 segment 是Lucene 索引庫的一部分,而Nutch 的Segment是WebDB中被抓取和索引的一部分。
抓取過程詳解:
抓取是一個循環的過程:抓取工具從WebDB中生成了一個 fetchlist 集合;抽取工具根據fetchlist從網絡上下載網頁內容;工具程序根據抽取工具發現的新連接更新WebDB;而後再生成新的fetchlist;周而復始。這個抓取循環在nutch中常常指: generate/fetch/update 循環。
通常來講同一域名下的 url 連接會被合成到同一個 fetchlist。這樣作的考慮是:當同時使用多個工具抓取的時候,不會產生重複抓取的現象。Nutch 遵循 Robots Exclusion Protocol, 能夠用robots.txt 定義保護私有網頁數據不被抓去。
上面這個抓取工具的組合是Nutch的最外層的,也能夠直接使用更底層的工具,本身組合這些底層工具的執行順序達到一樣的結果。這是Nutch吸引人的地方。下面把上述過程分別詳述一下,括號內就是底層工具的名字:
1、建立一個新的WebDB (admin db -create)。
2、把開始抓取的跟Url 放入WebDb (inject)。
3、從WebDb的新 segment 中生成 fetchlist (generate)。
4、根據 fetchlist 列表抓取網頁的內容 (fetch)。
5、根據抓取回來的網頁連接url更新 WebDB (updatedb)。
6、重複上面3-5個步驟直到到達指定的抓取層數。
7、用計算出來的網頁url權重 scores 更新 segments (updatesegs)。
8、對抓取回來的網頁創建索引(index)。
9、在索引中消除重複的內容和重複的url (dedup)。
10、合併多個索引到一個大索引,爲搜索提供索引庫(merge)。
*****************
Heritrix
開發語言:Java
http://crawler.archive.org/
Heritrix是一個開源,可擴展的web爬蟲項目。Heritrix設計成嚴格按照robots.txt文件的排除指示和META robots標籤。
簡介
Heritrix與Nutch對比
和 Nutch。兩者均爲Java開源框架,Heritrix 是 SourceForge上的開源產品,Nutch爲Apache的一個子項目,它們都稱做網絡爬蟲/蜘蛛( Web Crawler),它們實現的原理基本一致:深度遍歷網站的資源,將這些資源抓取到本地,使用的方法都是分析網站每個有效的URI,並提交Http請求,從而得到相應結果,生成本地文件及相應的日誌信息等。
Heritrix 是個 "archival crawler" -- 用來獲取完整的、精確的、站點內容的深度複製。包括獲取圖像以及其餘非文本內容。抓取並存儲相關的內容。對內容來者不拒,不對頁面進行內容上的修改。從新爬行對相同的URL不針對先前的進行替換。爬蟲經過Web用戶界面啓動、監控、調整,容許彈性的定義要獲取的URL。
Nutch和Heritrix的差別:
Nutch 只獲取並保存可索引的內容。Heritrix則是照單全收。力求保存頁面原貌
Nutch 能夠修剪內容,或者對內容格式進行轉換。
Nutch 保存內容爲數據庫優化格式便於之後索引;刷新替換舊的內容。而Heritrix 是添加(追加)新的內容。
Nutch 從命令行運行、控制。Heritrix 有 Web 控制管理界面。
Nutch 的定製能力不夠強,不過如今已經有了必定改進。Heritrix 可控制的參數更多。
Heritrix提供的功能沒有nutch多,有點整站下載的味道。既沒有索引又沒有解析,甚至對於重複爬取URL都處理不是很好。
Heritrix的功能強大 可是配置起來卻有點麻煩。
三者的比較
1、從功能方面來講,Heritrix與Larbin的功能相似。都是一個純粹的網絡爬蟲,提供網站的鏡像下載。而Nutch是一個網絡搜索引擎框架,爬取網頁只是其功能的一部分。
2、從分佈式處理來講,Nutch支持分佈式處理,而另外兩個好像尚且尚未支持。
3、從爬取的網頁存儲方式來講,Heritrix和 Larbin都是將爬取下來的內容保存爲原始類型的內容。而Nutch是將內容保存到其特定格式的segment中去。
四,對於爬取下來的內容的處理來講,Heritrix和 Larbin都是將爬取下來的內容不經處理直接保存爲原始內容。而Nutch對文本進行了包括連接分析、正文提取、創建索引(Lucene索引)等處理。
五,從爬取的效率來講,Larbin效率較高,由於其是使用c++實現的而且功能單一。
crawler |
開發 語言 |
功能 單一 |
支持分佈式 爬取 |
效率 |
鏡像 保存 |
Nutch |
Java |
× |
√ |
低 |
× |
Larbin |
C++ |
√ |
× |
高 |
√ |
Heritrix |
Java |
√ |
× |
中 |
√ |
-----------------------------------------------------------
其它一些開源爬蟲彙總:
WebSPHINX
WebSPHINX是一個Java類包和Web爬蟲的交互式開發環境。Web爬蟲(也叫做機器人或蜘蛛)是能夠自動瀏覽與處理Web頁面的程序。WebSPHINX由兩部分組成:爬蟲工做平臺和WebSPHINX類包。
http://www.cs.cmu.edu/~rcm/websphinx/
WebLech
WebLech是一個功能強大的Web站點下載與鏡像工具。它支持按功能需求來下載web站點並可以儘量模仿標準Web瀏覽器的行爲。WebLech有一個功能控制檯並採用多線程操做。
http://weblech.sourceforge.net/
Arale
Arale主要爲我的使用而設計,而沒有像其它爬蟲同樣是關注於頁面索引。Arale可以下載整個web站點或來自web站點的某些資源。Arale還可以把動態頁面映射成靜態頁面。
http://web.tiscali.it/_flat/arale.jsp.html
J-Spider
J-Spider:是一個徹底可配置和定製的Web Spider引擎.你能夠利用它來檢查網站的錯誤(內在的服務器錯誤等),網站內外部連接檢查,分析網站的結構(可建立一個網站地圖),下載整個Web站點,你還能夠寫一個JSpider插件來擴展你所須要的功能。
http://j-spider.sourceforge.net/
spindle
spindle 是一個構建在Lucene工具包之上的Web索引/搜索工具.它包括一個用於建立索引的HTTP spider和一個用於搜索這些索引的搜索類。spindle項目提供了一組JSP標籤庫使得那些基於JSP的站點不須要開發任何Java類就可以增長搜索功能。
http://www.bitmechanic.com/projects/spindle/
Arachnid
Arachnid: 是一個基於Java的web spider框架.它包含一個簡單的HTML剖析器可以分析包含HTML內容的輸入流.經過實現Arachnid的子類就可以開發一個簡單的Web spiders並可以在Web站上的每一個頁面被解析以後增長几行代碼調用。Arachnid的下載包中包含兩個spider應用程序例子用於演示如何使用該框架。
http://arachnid.sourceforge.net/
LARM
LARM可以爲Jakarta Lucene搜索引擎框架的用戶提供一個純Java的搜索解決方案。它包含可以爲文件,數據庫表格創建索引的方法和爲Web站點建索引的爬蟲。
http://larm.sourceforge.net/
JoBo
JoBo 是一個用於下載整個Web站點的簡單工具。它本質是一個Web Spider。與其它下載工具相比較它的主要優點是可以自動填充form(如:自動登陸)和使用cookies來處理session。JoBo還有靈活的下載規則(如:經過網頁的URL,大小,MIME類型等)來限制下載。
http://www.matuschek.net/software/jobo/index.html
snoics-reptile
snoics -reptile是用純Java開發的,用來進行網站鏡像抓取的工具,能夠使用配製文件中提供的URL入口,把這個網站全部的能用瀏覽器經過GET的方式獲取到的資源所有抓取到本地,包括網頁和各類類型的文件,如:圖片、flash、mp3、zip、rar、exe等文件。能夠將整個網站完整地下傳至硬盤內,並能保持原有的網站結構精確不變。只須要把抓取下來的網站放到web服務器(如:Apache)中,就能夠實現完整的網站鏡像。
http://www.blogjava.net/snoics
Web-Harvest
Web-Harvest是一個Java開源Web數據抽取工具。它可以收集指定的Web頁面並從這些頁面中提取有用的數據。Web-Harvest主要是運用了像XSLT,XQuery,正則表達式等這些技術來實現對text/xml的操做。
http://web-harvest.sourceforge.net
spiderpy
spiderpy是一個基於Python編碼的一個開源web爬蟲工具,容許用戶收集文件和搜索網站,並有一個可配置的界面。
http://pyspider.sourceforge.net/
The Spider Web Network Xoops Mod Team
pider Web Network Xoops Mod是一個Xoops下的模塊,徹底由PHP語言實現。
http://www.tswn.com/
http://chenqx.github.io/2014/11/09/Scrapy-Tutorial-for-BBSSpider/
Perl 作爬蟲也很爽啊,能夠看看mojo框架
前一陣金融系的同窗委託我寫個Python爬蟲從某小額信貸網站爬訂單細節(公開的),共20萬條,用了多線程仍是嫌慢。比較奇怪的是這麼頻繁的訪問它不封我IP…最後一個搞安全的同窗幫我直接拖庫了。
1024會短期封IP,用同一個cookie爬就沒事了
爬蟲下載慢主要緣由是阻塞等待發往網站的請求和網站返回
解決的方法是採用非阻塞的epoll模型。
將建立的socket鏈接句柄和回調函數註冊給操做系統,這樣在單進程和單線程的狀況下能夠併發大量對頁面的請求。
若是以爲本身寫比較麻煩,我用過現成的類庫:tornado的異步客戶端
http://www.tornadoweb.org/documentation/httpclient.html
若是你打不開增長host或FQ
host地址:
74.125.129.121 http://www.tornadoweb.org
http://www.ibm.com/developerworks/cn/aix/library/au-threadingpython/
用的語言是python。目前想要爬的同花順股票行情(http://q.10jqka.com.cn/stock/fl/#refCountId=db_5093800d_645,db_509381c1_860),又一次被javascript卡住。由於一頁中只顯示52條信息,想要看所有的股票數據必須點擊下面的頁碼,是用javascript寫的,沒法直接用urllib2之類的庫處理。試過用webkit(ghost.py)來模擬點擊, Headless Webkit,開源的有 PhantomJS 等。可以解析並運行頁面上的腳本以索引動態內容是現代爬蟲的重要功能之一。Google's Crawler Now Understands JavaScript: What Does This Mean For You?
4.3 Crawling the Web聽說如今改爲了C++,可是我沒有找到明確的材料。
In order to scale to hundreds of millions of web pages, Google has a fast distributed crawling system. A single URLserver serves lists of URLs to a number of crawlers (we typically ran about 3). Both the URLserver and the crawlers are implemented in Python. Each crawler keeps roughly 300 connections open at once. This is necessary to retrieve web pages at a fast enough pace. At peak speeds, the system can crawl over 100 web pages per second using four crawlers. This amounts to roughly 600K per second of data. A major performance stress is DNS lookup. Each crawler maintains a its own DNS cache so it does not need to do a DNS lookup before crawling each document. Each of the hundreds of connections can be in a number of different states: looking up DNS, connecting to host, sending request, and receiving response. These factors make the crawler a complex component of the system. It uses asynchronous IO to manage events, and a number of queues to move page fetches from state to state.
用 Asynccore 之類手寫。看看 Twisted 有沒有非阻塞、異步的 HTTP client 框架。
用過 multiprocessing 包 + utllib 作 http client 速度至關不理想,線程應該會好但個人直覺是提高有限。
----
推薦 gevent + grequests
不少人提到了grequests(gevent + requests) 可是這東西在2000多個請求以後就崩潰了。(OSerror: Too many open files).推薦用frequests,grequests一樣的API,可是更加穩定。
i-trofimtschuk/frequests 路 GitHub
同問,目前在熟悉python的工具,準備系統學習下數據挖掘。用到的軟件包包括numpy,nltk,networkx,matplotlib
我仍是認真答一下吧,爬蟲這種東西在大批量抓去時主要有下面幾個量變引起質變的挑戰:
1. 出口IP數量,主要是考慮防止被封禁,帶寬反而不是大問題,這個問題能夠經過搭建NAT出口集羣,或者單機多IP的方式實現
2. 本地端口號耗盡,因爲爬蟲是服務端編程不太常見的主動發起鏈接的應用,在普通只有一個IP綁定的機器上會受到65535的限制(通常在50000多就會受到限制)
3. 大容量存儲的需求,通常都是經過開源或者本身研發的分佈式存儲系統來實現,像谷歌(GFS)和百度(百靈)都是自研,這裏就不展開說了
4. 動態網頁的支持,像京東這種網站,內容都是經過相似Facebook的bigpipe同樣動態加載的,直接像curl這樣抓取看到的頁面幾乎是空白的,這就要求爬蟲能模擬JS的運行,這方面有不少基於v8引擎的開源項目:
CasperJS, a navigation scripting and testing utility for PhantomJS and SlimerJS
PhantomJS | PhantomJS
因爲這個需求,爬蟲成了CPU密集型的應用了,分佈式的需求也就有了
單機爬蟲的主要難點在的異步非阻塞網絡編程,老生常談了。先暫時寫這麼多吧
代理ip有的變得鏈接很慢,甚至連不上,有什麼樣的機制可讓ip列表保持較好的可用性?
第一,從API接口獲取100個代理IP,備用。API接口能夠百度搜下全網代理IP,他們有提供;
第二,響應速度慢的直接刪除;若是列表刪除沒了,重複執行第一步;
第三,從IP列表中獲取一個IP訪問目標網址,若是這個IP訪問失敗,從IP庫刪除這個IP,從新執行第三部。
把響應時間紀錄下來
如下是個人一些實踐經驗:
至於題主提到的:
還有,採用現有的Python爬蟲框架,相比與直接使用內置庫,優點在哪?由於Python自己寫爬蟲已經很簡單了。
third party library能夠作到built-in library作不到或者作起來很困難的事情,僅此而已。還有就是,爬蟲簡不簡單,徹底取決於需求,跟Python是沒什麼關係的。
要處理 js 運行後的結果,能夠使用 html5lib。
但我以爲最好的是用 beautifulsoup4 的接口,讓它內部用 html5lib。
本身寫爬蟲的話,用一些異步事件驅動庫,如gevent,比單純多線程要好不少。
而後用beautifsoup解析,挑一些本身感興趣的數據,好比打分、評論、商家、分類什麼的。而後用一些科學庫作一些簡單的統計和報表,好比 numpy、scipy、matplotlib等。網上也有好多數據生成報表的 js 庫,很酷炫,也很不錯的 :)
python寫爬蟲仍是不錯的,不過用爬蟲框架來寫,還真沒有嘗試過,打算嘗試下,準備搞個大規模的數據抓取
使用python作網絡爬蟲,網上的資源不少,我搞不清爲何不少人和機構都熱衷於用python作網絡爬蟲,大概是由於python在這方面提供的支持庫比較多也比較容易實現吧。現有的比較典型的開源爬蟲架構如scrapy(python實現),其實現的功能已經比較全面了,最先的時候想了解網絡爬蟲的原理的時候,曾經嘗試過使用scrapy定製,scrapy已經實現了比較複雜的爬蟲功能,官方文檔也介紹的很詳細。
爬蟲的GUI框架使用Tkinter,Tkinter支持不少語言,好比ruby,perl,python等,是一個比較簡單圖形界面庫,之因此不採用其餘第三方GUI框架是由於這些框架不少只支持python2.7.*之前的版本,而我這裏用的python3.4.1,無奈選擇了最方便的方法。
下面是程序的界面:
下面咱們再對Nutch、Larbin、Heritrix這三個爬蟲進行更細緻的比較:
Nutch
開發語言:Java
http://lucene.apache.org/nutch/
簡介:
Apache的子項目之一,屬於Lucene項目下的子項目。
Nutch是一個基於Lucene,相似Google的完整網絡搜索引擎解決方案,基於Hadoop的分佈式處理模型保證了系統的性能,相似Eclipse的插件機制保證了系統的可客戶化,並且很容易集成到本身的應用之中。
Larbin
開發語言:C++
http://larbin.sourceforge.net/index-eng.html
簡介
larbin是一種開源的網絡爬蟲,由法國的年輕人 Sébastien Ailleret獨立開發。larbin目的是可以跟蹤頁面的url進行擴展的抓取,最後爲搜索引擎提供普遍的數據來源。
Larbin只是一個爬蟲,也就是說larbin只抓取網頁,至於如何parse的事情則由用戶本身完成。另外,如何存儲到數據庫以及創建索引的事情 larbin也不提供。
latbin最初的設計也是依據設計簡單可是高度可配置性的原則,所以咱們能夠看到,一個簡單的larbin的爬蟲能夠天天獲取500萬的網頁,很是高效。
Heritrix
開發語言:Java
簡介
與Nutch比較
和 Nutch。兩者均爲Java開源框架,Heritrix 是 SourceForge上的開源產品,Nutch爲Apache的一個子項目,它們都稱做網絡爬蟲它們實現的原理基本一致:深度遍歷網站的資源,將這些資 源抓取到本地,使用的方法都是分析網站每個有效的URI,並提交Http請求,從而得到相應結果,生成本地文件及相應的日誌信息等。
Heritrix 是個 "archival crawler" -- 用來獲取完整的、精確的、站點內容的深度複製。包括獲取圖像以及其餘非文本內容。抓取並存儲相關的內容。對內容來者不拒,不對頁面進行內容上的修改。從新 爬行對相同的URL不針對先前的進行替換。爬蟲經過Web用戶界面啓動、監控、調整,容許彈性的定義要獲取的URL。
兩者的差別:
Nutch 只獲取並保存可索引的內容。Heritrix則是照單全收。力求保存頁面原貌
Nutch 能夠修剪內容,或者對內容格式進行轉換。
Nutch 保存內容爲數據庫優化格式便於之後索引;刷新替換舊的內容。而Heritrix 是添加(追加)新的內容。
Nutch 從命令行運行、控制。Heritrix 有 Web 控制管理界面。
Nutch 的定製能力不夠強,不過如今已經有了必定改進。Heritrix 可控制的參數更多。
Heritrix提供的功能沒有nutch多,有點整站下載的味道。既沒有索引又沒有解析,甚至對於重複爬取URL都處理不是很好。
Heritrix的功能強大 可是配置起來卻有點麻煩。
其中Nutch和Heritrix比較流行
httpclient不錯
簡單的定向爬取:
Python + urlib2 + RegExp + bs4
或者
Node.js + co,任一一款dom框架或者html parser + Request + RegExp 擼起來也是很順手。
對我來講上面兩個選擇差很少是等價的,但主要我JS比較熟,如今選擇Node平臺會多一些。
上規模的整站爬取:
Python + Scrapy
如 果說上面兩個方案裏DIY 的 spider是小米加步槍,那Scrapy簡直就是重工加農炮,好用到不行,自定義爬取規則,http錯誤處理,XPath,RPC,Pipeline機 制等等等。並且,因爲Scrapy是基於Twisted實現的,因此同時兼顧有很是好的效率,相對來講惟一的缺點就是安裝比較麻煩,依賴也比較多,我還算 是比較新的osx,同樣沒辦法直接pip install scrapy
另外若是在spider中引入xpath的話,再在chrome上安裝xpath的插件,那麼解析路徑一目瞭然,開發效率奇高。
估計和我同樣在Windows開發、部署到linux服務器的人很多。nodejs在這時就有個很突出的優勢:部署方便、跨平臺幾乎無障礙,相比之下python……簡直讓人脫層皮。
解析頁面用的是cheerio,全兼容jQuery語法,熟悉前端的話用起來爽快之極,不再用折騰煩人的正則了;
操做數據庫直接用mysql這個module就行,該有的功能全有;
爬 取效率麼,其實沒有真正作過壓力測試,由於我抓的是知乎,線程稍多一點瓶頸就跑到帶寬上。並且它也不是真多線程而是異步,最後帶寬全滿(大約幾百線程、 10MB/s左右)時,CPU也不過50%左右,這還只是一個linode最低配主機的CPU。何況平時我限制了線程和抓取間隔,簡直不怎麼消耗性能;
最後是代碼,異步編程最頭疼的是掉進callback地獄,根據本身實際狀況寫個多線隊列的話,也不比同步編程麻煩太多就是了。
PHP寫爬蟲還好,我寫過一個,用PHP Command Line下運行。用Curl_multi 50線程併發,一天能抓大概60萬頁,依網速而定,我是用的校園網因此比較快,數據是用正則提取出來的。
Curl是比較成熟的一個lib,異常處理、http header、POST之類都作得很好,重要的是PHP下操做MySQL進行入庫操做比較省心。
不過在多線程Curl(Curl_multi)方面,對於初學者會比較麻煩,特別是PHP官方文檔在Curl_multi這方面的介紹也極爲模糊。
1.對頁面的解析能力基本沒區別,你們都支持正則,不過Python有些傻瓜拓展,用起來會方便不少;
2.對數據庫的操做能力的話,PHP對MySQL有原生支持,Python須要添加MySQLdb之類的lib,不過也不算麻煩;
3.爬取效率的話,都支持多線程,效率我卻是沒感受有什麼區別,基本上瓶頸只在網絡上了。不過嚴謹的測試我沒作過,畢竟我沒有用多種語言實現同一種功能的習慣,不過我卻是感受PHP好像還要快一些?
4.代碼量的話,爬蟲這種簡單的東西基本沒什麼區別,幾十行的事,若是加上異常處理也就百來行,或者麻煩點異常的Mark下來,等下重爬等等的處理,也就幾百行,你們都沒什麼區別。
不過Python若是不把lib算進去的話顯然是最少的。
Node.js。優勢是效率、效率仍是效率,因爲網絡是異步的,因此基本如同幾百個進程併發同樣強大,內存和CPU佔用很是小,若是沒有對抓取來的數據進 行復雜的運算加工,那麼系統的瓶頸基本就在帶寬和寫入MySQL等數據庫的I/O速度。固然,優勢的反面也是缺點,異步網絡表明你須要callback, 這時候若是業務需求是線性了,好比必須等待上一個頁面抓取完成後,拿到數據,才能進行下一個頁面的抓取,甚至多層的依賴關係,那就會出現可怕的多層 callback!基本這時候,代碼結構和邏輯就會一團亂麻。固然能夠用Step等流程控制工具解決這些問題。
最後說Python。若是你對效率沒有極端的要求,那麼推薦用Python!首先,Python的語法很簡潔,一樣的語句,能夠少敲不少次鍵盤。而後,Python很是適合作數據的處理,好比函數參數的打包解包,列表解析,矩陣處理,很是方便。
果斷python,c++也ok
也多進程爬取大網站(百萬頁面以上,大概2-3天)。
Python,多線程的方面會很是爽。
nodejs, 異步多線程
1.webmagic 【豬豬-後端】WebMagic框架搭建的爬蟲,根據自定義規則,直接抓取,使用靈活,Demo部署便可查看。 官站:WebMagic 2.jsoup java網絡爬蟲jsoup和commons-httpclient使用入門教程實例源碼 搜索"jsoup"的分享列表 官站:jsoup Java HTML Parser, with best of DOM, CSS, and jquery 3.apache httpclient java爬蟲實現之httpClient4.2.1 鏈接池管理客戶端請求 抓取頁面簡單示例 搜索"httpclient"的分享列表 HttpClient - HttpClient Home 4.若是以爲框架用起來複雜,其實徹底能夠經過java.net.HttpURLConnection來實現。 java經過java.net.HttpURLConnection類抓取網頁源碼工具類分享 搜索"HttpURLConnection"的分享列表 參考下爬蟲相關的源碼demo吧: 搜索"爬蟲"的分享列表 搜索"抓取"的分享列表
http://www.zhihu.com/question/32676963
網絡爬蟲是一個自動提取網頁的程序,它爲搜索引擎從萬維網上下載網頁,是搜索引擎的重要組成。傳統爬蟲從一個或若干初始網頁的URL開始,得到初始 網頁上的URL,在抓取網頁的過程當中,不斷從當前頁面上抽取新的URL放入隊列,直到知足系統的必定中止條件。聚焦爬蟲的工做流程較爲複雜,須要根據必定 的網頁分析算法過濾與主題無關的連接,保留有用的連接並將其放入等待抓取的URL隊列。而後,它將根據必定的搜索策略從隊列中選擇下一步要抓取的網頁 URL,並重覆上述過程,直到達到系統的某一條件時中止。另外,全部被爬蟲抓取的網頁將會被系統存貯,進行必定的分析、過濾,並創建索引,以便以後的查詢 和檢索;對於聚焦爬蟲來講,這一過程所獲得的分析結果還可能對之後的抓取過程給出反饋和指導。 世界上已經成型的爬蟲軟件多達上百種,本文對較爲知名及常見的開源爬蟲軟件進行梳理,按開發語言進行彙總。雖然搜索引擎也有爬蟲,但本次我彙總的只是爬蟲軟件,而非大型、複雜的搜索引擎,由於不少兄弟只是想爬取數據,而非運營一個搜索引擎。 Java爬蟲 1、Arachnid Arachnid是一個基於Java的web spider框架.它包含一個簡單的HTML剖析器可以分析包含HTML內容的輸入流.經過實現Arachnid的子類就可以開發一個簡單的Web spiders並可以在Web站上的每一個頁面被解析以後增長几行代碼調用。 Arachnid的下載包中包含兩個spider應用程序例子用於演示如何使用該框架。 特色:微型爬蟲框架,含有一個小型HTML解析器 許可證:GPL 2、crawlzilla crawlzilla 是一個幫你輕鬆創建搜索引擎的自由軟件,有了它,你就不用依靠商業公司的搜索引擎,也不用再煩惱公司內部網站資料索引的問題。 由 nutch 專案爲核心,並整合更多相關套件,並卡發設計安裝與管理UI,讓使用者更方便上手。 crawlzilla 除了爬取基本的 html 外,還能分析網頁上的文件,如( doc、pdf、ppt、ooo、rss )等多種文件格式,讓你的搜索引擎不僅是網頁搜索引擎,而是網站的完整資料索引庫。 擁有中文分詞能力,讓你的搜索更精準。 crawlzilla的特點與目標,最主要就是提供使用者一個方便好用易安裝的搜索平臺。 受權協議: Apache License 2 開發語言: Java JavaScript SHELL 操做系統: Linux 項目主頁: https://github.com/shunfa/crawlzilla 下載地址: http://sourceforge.net/projects/crawlzilla/ 特色:安裝簡易,擁有中文分詞功能 3、Ex-Crawler Ex-Crawler 是一個網頁爬蟲,採用 Java 開發,該項目分紅兩部分,一個是守護進程,另一個是靈活可配置的 Web 爬蟲。使用數據庫存儲網頁信息。 受權協議: GPLv3 開發語言: Java 操做系統: 跨平臺 特色:由守護進程執行,使用數據庫存儲網頁信息 4、Heritrix Heritrix 是一個由 java 開發的、開源的網絡爬蟲,用戶能夠使用它來從網上抓取想要的資源。其最出色之處在於它良好的可擴展性,方便用戶實現本身的抓取邏輯。 Heritrix採用的是模塊化的設計,各個模塊由一個控制器類(CrawlController類)來協調,控制器是總體的核心。 代碼託管:https://github.com/internetarchive/heritrix3 受權協議: Apache 開發語言: Java 操做系統: 跨平臺 特色:嚴格遵守robots文件的排除指示和META robots標籤 5、heyDr heyDr是一款基於java的輕量級開源多線程垂直檢索爬蟲框架,遵循GNU GPL V3協議。 用戶能夠經過heyDr構建本身的垂直資源爬蟲,用於搭建垂直搜索引擎前期的數據準備。 受權協議: GPLv3 開發語言: Java 操做系統: 跨平臺 特色:輕量級開源多線程垂直檢索爬蟲框架 6、ItSucks ItSucks是一個java web spider(web機器人,爬蟲)開源項目。支持經過下載模板和正則表達式來定義下載規則。提供一個swing GUI操做界面。 特色:提供swing GUI操做界面 7、jcrawl jcrawl是一款小巧性能優良的的web爬蟲,它能夠從網頁抓取各類類型的文件,基於用戶定義的符號,好比email,qq. 受權協議: Apache 開發語言: Java 操做系統: 跨平臺 特色:輕量、性能優良,能夠從網頁抓取各類類型的文件 8、JSpider JSpider是一個用Java實現的WebSpider,JSpider的執行格式以下: jspider [URL] [ConfigName] URL必定要加上協議名稱,如:http://,不然會報錯。若是省掉ConfigName,則採用默認配置。 JSpider 的行爲是由配置文件具體配置的,好比採用什麼插件,結果存儲方式等等都在conf\[ConfigName]\目錄下設置。JSpider默認的配置種類 不多,用途也不大。可是JSpider很是容易擴展,能夠利用它開發強大的網頁抓取與數據分析工具。要作到這些,須要對JSpider的原理有深刻的了 解,而後根據本身的需求開發插件,撰寫配置文件。 受權協議: LGPL 開發語言: Java 操做系統: 跨平臺 特色:功能強大,容易擴展 9、Leopdo 用JAVA編寫的web 搜索和爬蟲,包括全文和分類垂直搜索,以及分詞系統 受權協議: Apache 開發語言: Java 操做系統: 跨平臺 特色:包括全文和分類垂直搜索,以及分詞系統 10、MetaSeeker 是一套完整的網頁內容抓取、格式化、數據集成、存儲管理和搜索解決方案。 網絡爬蟲有多種實現方法,若是按照部署在哪裏分,能夠分紅: 1,服務器側:通常是一個多線程程序,同時下載多個目標HTML,能夠用PHP, Java, Python(當前很流行)等作,能夠速度作得很快,通常綜合搜索引擎的爬蟲這樣作。可是,若是對方討厭爬蟲,極可能封掉你的IP,服務器IP又不容易 改,另外耗用的帶寬也是挺貴的。建議看一下Beautiful soap。 2,客戶端:通常實現定題爬蟲,或者是聚焦爬蟲,作綜合搜索引擎不容易成功,而垂直搜訴或者比價服務或者推薦引擎,相對容易不少,這類爬蟲不是什麼 頁面都 取的,而是隻取你關係的頁面,並且只取頁面上關心的內容,例如提取黃頁信息,商品價格信息,還有提取競爭對手廣告信息的,搜一下Spyfu,頗有趣。這類 爬蟲能夠部署不少,並且能夠頗有侵略性,對方很難封鎖。 MetaSeeker中的網絡爬蟲就屬於後者。 MetaSeeker工具包利用Mozilla平臺的能力,只要是Firefox看到的東西,它都能提取。 特色:網頁抓取、信息提取、數據抽取工具包,操做簡單 11、Playfish playfish是一個採用java技術,綜合應用多個開源java組件實現的網頁抓取工具,經過XML配置文件實現高度可定製性與可擴展性的網頁抓取工具 應用開源jar包包括httpclient(內容讀取),dom4j(配置文件解析),jericho(html解析),已經在 war包的lib下。 這個項目目前還很不成熟,可是功能基本都完成了。要求使用者熟悉XML,熟悉正則表達式。目前經過這個工具能夠抓取各種論壇,貼吧,以及各種CMS 系統。像Discuz!,phpbb,論壇跟博客的文章,經過本工具均可以輕鬆抓取。抓取定義徹底採用XML,適合Java開發人員使用。 使用方法, 1.下載右邊的.war包導入到eclipse中, 2.使用WebContent/sql下的wcc.sql文件創建一個範例數據庫, 3.修改src包下wcc.core的dbConfig.txt,將用戶名與密碼設置成你本身的mysql用戶名密碼。 4.而後運行SystemCore,運行時候會在控制檯,無參數會執行默認的example.xml的配置文件,帶參數時候名稱爲配置文件名。 系統自帶了3個例子,分別爲baidu.xml抓取百度知道,example.xml抓取個人javaeye的博客,bbs.xml抓取一個採用 discuz論壇的內容。 受權協議: MIT 開發語言: Java 操做系統: 跨平臺 特色:經過XML配置文件實現高度可定製性與可擴展性 12、Spiderman Spiderman 是一個基於微內核+插件式架構的網絡蜘蛛,它的目標是經過簡單的方法就能將複雜的目標網頁信息抓取並解析爲本身所須要的業務數據。 怎麼使用? 首先,肯定好你的目標網站以及目標網頁(即某一類你想要獲取數據的網頁,例如網易新聞的新聞頁面) 而後,打開目標頁面,分析頁面的HTML結構,獲得你想要數據的XPath,具體XPath怎麼獲取請看下文。 最後,在一個xml配置文件裏填寫好參數,運行Spiderman吧! 受權協議: Apache 開發語言: Java 操做系統: 跨平臺 特色:靈活、擴展性強,微內核+插件式架構,經過簡單的配置就能夠完成數據抓取,無需編寫一句代碼 13、webmagic webmagic的是一個無須配置、便於二次開發的爬蟲框架,它提供簡單靈活的API,只需少許代碼便可實現一個爬蟲。 webmagic採用徹底模塊化的設計,功能覆蓋整個爬蟲的生命週期(連接提取、頁面下載、內容抽取、持久化),支持多線程抓取,分佈式抓取,並支持自動重試、自定義UA/cookie等功能。 webmagic包含強大的頁面抽取功能,開發者能夠便捷的使用css selector、xpath和正則表達式進行連接和內容的提取,支持多個選擇器鏈式調用。 webmagic的使用文檔:http://webmagic.io/docs/ 查看源代碼:http://git.oschina.net/flashsword20/webmagic 受權協議: Apache 開發語言: Java 操做系統: 跨平臺 特色:功能覆蓋整個爬蟲生命週期,使用Xpath和正則表達式進行連接和內容的提取。 備註:這是一款國產開源軟件,由 黃億華貢獻 14、Web-Harvest Web-Harvest是一個Java開源Web數據抽取工具。它可以收集指定的Web頁面並從這些頁面中提取有用的數據。Web-Harvest主要是運用了像XSLT,XQuery,正則表達式等這些技術來實現對text/xml的操做。 其實現原理是,根據預先定義的配置文件用httpclient獲取頁面的所有內容(關於httpclient的內容,本博有些文章已介紹),而後運 用XPath、XQuery、正則表達式等這些技術來實現對text/xml的內容篩選操做,選取精確的數據。前兩年比較火的垂直搜索(好比:酷訊等)也 是採用相似的原理實現的。Web-Harvest應用,關鍵就是理解和定義配置文件,其餘的就是考慮怎麼處理數據的Java代碼。固然在爬蟲開始前,也可 以把Java變量填充到配置文件中,實現動態的配置。 受權協議: BSD 開發語言: Java 特色:運用XSLT、XQuery、正則表達式等技術來實現對Text或XML的操做,具備可視化的界面 15、WebSPHINX WebSPHINX是一個Java類包和Web爬蟲的交互式開發環境。Web爬蟲(也叫做機器人或蜘蛛)是能夠自動瀏覽與處理Web頁面的程序。WebSPHINX由兩部分組成:爬蟲工做平臺和WebSPHINX類包。 受權協議:Apache 開發語言:Java 特色:由兩部分組成:爬蟲工做平臺和WebSPHINX類包 16、YaCy YaCy基於p2p的分佈式Web搜索引擎.同時也是一個Http緩存代理服務器.這個項目是構建基於p2p Web索引網絡的一個新方法.它能夠搜索你本身的或全局的索引,也能夠Crawl本身的網頁或啓動分佈式Crawling等. 受權協議: GPL 開發語言: Java Perl 操做系統: 跨平臺 特色:基於P2P的分佈式Web搜索引擎 Python爬蟲 17、QuickRecon QuickRecon是一個簡單的信息收集工具,它能夠幫助你查找子域名名稱、perform zone transfe、收集電子郵件地址和使用microformats尋找人際關係等。QuickRecon使用python編寫,支持linux和 windows操做系統。 受權協議: GPLv3 開發語言: Python 操做系統: Windows Linux 特色:具備查找子域名名稱、收集電子郵件地址並尋找人際關係等功能 18、PyRailgun 這是一個很是簡單易用的抓取工具。支持抓取javascript渲染的頁面的簡單實用高效的python網頁爬蟲抓取模塊 受權協議: MIT 開發語言: Python 操做系統: 跨平臺 Windows Linux OS X 特色:簡潔、輕量、高效的網頁抓取框架 備註:此軟件也是由國人開放 github下載:https://github.com/princehaku/pyrailgun#readme 19、Scrapy Scrapy 是一套基於基於Twisted的異步處理框架,純python實現的爬蟲框架,用戶只須要定製開發幾個模塊就能夠輕鬆的實現一個爬蟲,用來抓取網頁內容以及各類圖片,很是之方便~ 受權協議: BSD 開發語言: Python 操做系統: 跨平臺 github源代碼:https://github.com/scrapy/scrapy 特色:基於Twisted的異步處理框架,文檔齊全 C++爬蟲 20、hispider HiSpider is a fast and high performance spider with high speed 嚴格說只能是一個spider系統的框架, 沒有細化需求, 目前只是能提取URL, URL排重, 異步DNS解析, 隊列化任務, 支持N機分佈式下載, 支持網站定向下載(須要配置hispiderd.ini whitelist). 特徵和用法: 基於unix/linux系統的開發 異步DNS解析 URL排重 支持HTTP 壓縮編碼傳輸 gzip/deflate 字符集判斷自動轉換成UTF-8編碼 文檔壓縮存儲 支持多下載節點分佈式下載 支持網站定向下載(須要配置 hispiderd.ini whitelist ) 可經過 http://127.0.0.1:3721/ 查看下載狀況統計,下載任務控制(可中止和恢復任務) 依賴基本通訊庫libevbase 和 libsbase (安裝的時候須要先安裝這個兩個庫)、 工做流程: 從中心節點取URL(包括URL對應的任務號, IP和port,也可能須要本身解析) 鏈接服務器發送請求 等待數據頭判斷是否須要的數據(目前主要取text類型的數據) 等待完成數據(有length頭的直接等待說明長度的數據不然等待比較大的數字而後設置超時) 數據完成或者超時, zlib壓縮數據返回給中心服務器,數據可能包括本身解析DNS信息, 壓縮後數據長度+壓縮後數據, 若是出錯就直接返回任務號以及相關信息 中心服務器收到帶有任務號的數據, 查看是否包括數據, 若是沒有數據直接置任務號對應的狀態爲錯誤, 若是有數據提取數據種link 而後存儲數據到文檔文件. 完成後返回一個新的任務. 受權協議: BSD 開發語言: C/C++ 操做系統: Linux 特色:支持多機分佈式下載, 支持網站定向下載 21、larbin larbin是一種開源的網絡爬蟲/網絡蜘蛛,由法國的年輕人 Sébastien Ailleret獨立開發。larbin目的是可以跟蹤頁面的url進行擴展的抓取,最後爲搜索引擎提供普遍的數據來源。Larbin只是一個爬蟲,也就 是說larbin只抓取網頁,至於如何parse的事情則由用戶本身完成。另外,如何存儲到數據庫以及創建索引的事情 larbin也不提供。一個簡單的larbin的爬蟲能夠天天獲取500萬的網頁。 利用larbin,咱們能夠輕易的獲取/肯定單個網站的全部連接,甚至能夠鏡像一個網站;也能夠用它創建url 列表羣,例如針對全部的網頁進行 url retrive後,進行xml的聯結的獲取。或者是 mp3,或者定製larbin,能夠做爲搜索引擎的信息的來源。 受權協議: GPL 開發語言: C/C++ 操做系統: Linux 特色:高性能的爬蟲軟件,只負責抓取不負責解析 22、Methabot Methabot 是一個通過速度優化的高可配置的 WEB、FTP、本地文件系統的爬蟲軟件。 受權協議: 未知 開發語言: C/C++ 操做系統: Windows Linux 特色:過速度優化、可抓取WEB、FTP及本地文件系統 源代碼:http://www.oschina.net/code/tag/methabot C#爬蟲 23、NWebCrawler NWebCrawler是一款開源,C#開發網絡爬蟲程序。 特性: 可配置:線程數,等待時間,鏈接超時,容許MIME類型和優先級,下載文件夾。 統計信息:URL數量,總下載文件,總下載字節數,CPU利用率和可用內存。 Preferential crawler:用戶能夠設置優先級的MIME類型。 Robust: 10+ URL normalization rules, crawler trap avoiding rules. 受權協議: GPLv2 開發語言: C# 操做系統: Windows 項目主頁:http://www.open-open.com/lib/view/home/1350117470448 特色:統計信息、執行過程可視化 24、Sinawler 國內第一個針對微博數據的爬蟲程序!原名「新浪微博爬蟲」。 登陸後,能夠指定用戶爲起點,以該用戶的關注人、粉絲爲線索,延人脈關係蒐集用戶基本信息、微博數據、評論數據。 該應用獲取的數據可做爲科研、與新浪微博相關的研發等的數據支持,但請勿用於商業用途。該應用基於.NET2.0框架,需SQL SERVER做爲後臺數據庫,並提供了針對SQL Server的數據庫腳本文件。 另外,因爲新浪微博API的限制,爬取的數據可能不夠完整(如獲取粉絲數量的限制、獲取微博數量的限制等) 本程序版權歸做者全部。你能夠免費: 拷貝、分發、呈現和表演當前做品,製做派生做品。 你不可將當前做品用於商業目的。 5.x版本已經發布! 該版本共有6個後臺工做線程:爬取用戶基本信息的機器人、爬取用戶關係的機器人、爬取用戶標籤的機器人、爬取微博內容的機器人、爬取微博評論的機器人,以 及調節請求頻率的機器人。更高的性能!最大限度挖掘爬蟲潛力! 以如今測試的結果看,已經可以知足自用。 本程序的特色: 1、6個後臺工做線程,最大限度挖掘爬蟲性能潛力! 2、界面上提供參數設置,靈活方便 3、拋棄app.config配置文件,本身實現配置信息的加密存儲,保護數據庫賬號信息 4、自動調整請求頻率,防止超限,也避免過慢,下降效率 5、任意對爬蟲控制,可隨時暫停、繼續、中止爬蟲 6、良好的用戶體驗 受權協議: GPLv3 開發語言: C# .NET 操做系統: Windows 25、spidernet spidernet是一個以遞歸樹爲模型的多線程web爬蟲程序, 支持text/html資源的獲取. 能夠設定爬行深度, 最大下載字節數限制, 支持gzip解碼, 支持以gbk(gb2312)和utf8編碼的資源; 存儲於sqlite數據文件. 源碼中TODO:標記描述了未完成功能, 但願提交你的代碼. 受權協議: MIT 開發語言: C# 操做系統: Windows github源代碼:https://github.com/nsnail/spidernet 特色:以遞歸樹爲模型的多線程web爬蟲程序,支持以GBK (gb2312)和utf8編碼的資源,使用sqlite存儲數據 26、Web Crawler mart and Simple Web Crawler是一個Web爬蟲框架。集成Lucene支持。該爬蟲能夠從單個連接或一個連接數組開始,提供兩種遍歷模式:最大迭代和最大深度。能夠設置 過濾器限制爬回來的連接,默認提供三個過濾器ServerFilter、BeginningPathFilter和 RegularExpressionFilter,這三個過濾器可用AND、OR和NOT聯合。在解析過程或頁面加載先後均可以加監聽器。介紹內容來自 Open-Open 開發語言: Java 操做系統: 跨平臺 受權協議: LGPL 特色:多線程,支持抓取PDF/DOC/EXCEL等文檔來源 27、網絡礦工 網站數據採集軟件 網絡礦工採集器(原soukey採摘) Soukey採摘網站數據採集軟件是一款基於.Net平臺的開源軟件,也是網站數據採集軟件類型中惟一一款開源軟件。儘管Soukey採摘開源,但並不會影響軟件功能的提供,甚至要比一些商用軟件的功能還要豐富。 受權協議: BSD 開發語言: C# .NET 操做系統: Windows 特色:功能豐富,絕不遜色於商業軟件 PHP爬蟲 28、OpenWebSpider OpenWebSpider是一個開源多線程Web Spider(robot:機器人,crawler:爬蟲)和包含許多有趣功能的搜索引擎。 受權協議: 未知 開發語言: PHP 操做系統: 跨平臺 特色:開源多線程網絡爬蟲,有許多有趣的功能 29、PhpDig PhpDig是一個採用PHP開發的Web爬蟲和搜索引擎。經過對動態和靜態頁面進行索引創建一個詞彙表。當搜索查詢時,它將按必定的排序規則顯示 包含關 鍵字的搜索結果頁面。PhpDig包含一個模板系統並可以索引PDF,Word,Excel,和PowerPoint文檔。PHPdig適用於專業化更 強、層次更深的個性化搜索引擎,利用它打造針對某一領域的垂直搜索引擎是最好的選擇。 演示:http://www.phpdig.net/navigation.php?action=demo 受權協議: GPL 開發語言: PHP 操做系統: 跨平臺 特色:具備採集網頁內容、提交表單功能 30、ThinkUp ThinkUp 是一個能夠採集推特,facebook等社交網絡數據的社會媒體視角引擎。經過採集我的的社交網絡帳號中的數據,對其存檔以及處理的交互分析工具,並將數據圖形化以便更直觀的查看。 受權協議: GPL 開發語言: PHP 操做系統: 跨平臺 github源碼:https://github.com/ThinkUpLLC/ThinkUp 特色:採集推特、臉譜等社交網絡數據的社會媒體視角引擎,可進行交互分析並將結果以可視化形式展示 31、微購 微購社會化購物系統是一款基於ThinkPHP框架開發的開源的購物分享系統,同時它也是一套針對站長、開源的的淘寶客網站程序,它整合了淘寶、天 貓、淘寶客等300多家商品數據採集接口,爲廣大的淘寶客站長提供傻瓜式淘客建站服務,會HTML就會作程序模板,免費開放下載,是廣大淘客站長的首選。 演示網址:http://tlx.wego360.com 受權協議: GPL 開發語言: PHP 操做系統: 跨平臺 ErLang爬蟲 32、Ebot Ebot 是一個用 ErLang 語言開發的可伸縮的分佈式網頁爬蟲,URLs 被保存在數據庫中可經過 RESTful 的 HTTP 請求來查詢。 受權協議: GPLv3 開發語言: ErLang 操做系統: 跨平臺 github源代碼:https://github.com/matteoredaelli/ebot 項目主頁: http://www.redaelli.org/matteo/blog/projects/ebot 特色:可伸縮的分佈式網頁爬蟲 Ruby爬蟲 33、Spidr Spidr 是一個Ruby 的網頁爬蟲庫,能夠將整個網站、多個網站、某個連接徹底抓取到本地。 開發語言: Ruby 受權協議:MIT 特色:可將一個或多個網站、某個連接徹底抓取到本地
33款可用來抓數據的開源爬蟲軟件工具 2015/10/10閱讀(3573)評論(6)收藏(183) 來人人都是產品經理【起點學院】,BAT實戰派產品總監手把手系統帶你學產品、學運營。點此查看詳情 要玩大數據,沒有數據怎麼玩?這裏推薦一些33款開源爬蟲軟件給你們。 爬蟲,即網絡爬蟲,是一種自動獲取網頁內容的程序。是搜索引擎的重要組成部分,所以搜索引擎優化很大程度上就是針對爬蟲而作出的優化。 網絡爬蟲是一個自動提取網頁的程序,它爲搜索引擎從萬維網上下載網頁,是搜索引擎的重要組成。傳統爬蟲從一個或若干初始網頁的URL開始,得到初始網頁上的URL,在抓取網頁的過程當中,不斷從當前頁面上抽取新的URL放入隊列,直到知足系統的必定中止條件。聚焦爬蟲的工做流程較爲複雜,須要根據必定的網頁分析算法過濾與主題無關的連接,保留有用的連接並將其放入等待抓取的URL隊列。而後,它將根據必定的搜索策略從隊列中選擇下一步要抓取的網頁URL,並重覆上述過程,直到達到系統的某一條件時中止。另外,全部被爬蟲抓取的網頁將會被系統存貯,進行必定的分析、過濾,並創建索引,以便以後的查詢和檢索;對於聚焦爬蟲來講,這一過程所獲得的分析結果還可能對之後的抓取過程給出反饋和指導。 世界上已經成型的爬蟲軟件多達上百種,本文對較爲知名及常見的開源爬蟲軟件進行梳理,按開發語言進行彙總。雖然搜索引擎也有爬蟲,但本次我彙總的只是爬蟲軟件,而非大型、複雜的搜索引擎,由於不少兄弟只是想爬取數據,而非運營一個搜索引擎。 171 Java爬蟲 1. Arachnid Arachnid是一個基於Java的web spider框架.它包含一個簡單的HTML剖析器可以分析包含HTML內容的輸入流.經過實現Arachnid的子類就可以開發一個簡單的Web spiders並可以在Web站上的每一個頁面被解析以後增長几行代碼調用。 Arachnid的下載包中包含兩個spider應用程序例子用於演示如何使用該框架。 特色:微型爬蟲框架,含有一個小型HTML解析器 許可證:GPL 2、crawlzilla crawlzilla 是一個幫你輕鬆創建搜索引擎的自由軟件,有了它,你就不用依靠商業公司的搜索引擎,也不用再煩惱公司內部網站資料索引的問題。 由 nutch 專案爲核心,並整合更多相關套件,並卡發設計安裝與管理UI,讓使用者更方便上手。 crawlzilla 除了爬取基本的 html 外,還能分析網頁上的文件,如( doc、pdf、ppt、ooo、rss )等多種文件格式,讓你的搜索引擎不僅是網頁搜索引擎,而是網站的完整資料索引庫。 擁有中文分詞能力,讓你的搜索更精準。 crawlzilla的特點與目標,最主要就是提供使用者一個方便好用易安裝的搜索平臺。 受權協議: Apache License 2 開發語言: Java JavaScript SHELL 操做系統: Linux 項目主頁: https://github.com/shunfa/crawlzilla 下載地址: http://sourceforge.net/projects/crawlzilla/ 特色:安裝簡易,擁有中文分詞功能 三、Ex-Crawler Ex-Crawler 是一個網頁爬蟲,採用 Java 開發,該項目分紅兩部分,一個是守護進程,另一個是靈活可配置的 Web 爬蟲。使用數據庫存儲網頁信息。 受權協議: GPLv3 開發語言: Java 操做系統: 跨平臺 特色:由守護進程執行,使用數據庫存儲網頁信息 4、Heritrix Heritrix 是一個由 java 開發的、開源的網絡爬蟲,用戶能夠使用它來從網上抓取想要的資源。其最出色之處在於它良好的可擴展性,方便用戶實現本身的抓取邏輯。 Heritrix採用的是模塊化的設計,各個模塊由一個控制器類(CrawlController類)來協調,控制器是總體的核心。 代碼託管:https://github.com/internetarchive/heritrix3 受權協議: Apache 開發語言: Java 操做系統: 跨平臺 特色:嚴格遵守robots文件的排除指示和META robots標籤 5、heyDr heyDr heyDr是一款基於java的輕量級開源多線程垂直檢索爬蟲框架,遵循GNU GPL V3協議。 用戶能夠經過heyDr構建本身的垂直資源爬蟲,用於搭建垂直搜索引擎前期的數據準備。 受權協議: GPLv3 開發語言: Java 操做系統: 跨平臺 特色:輕量級開源多線程垂直檢索爬蟲框架 6、ItSucks ItSucks是一個java web spider(web機器人,爬蟲)開源項目。支持經過下載模板和正則表達式來定義下載規則。提供一個swing GUI操做界面。 特色:提供swing GUI操做界面 7、jcrawl jcrawl是一款小巧性能優良的的web爬蟲,它能夠從網頁抓取各類類型的文件,基於用戶定義的符號,好比email,qq. 受權協議: Apache 開發語言: Java 操做系統: 跨平臺 特色:輕量、性能優良,能夠從網頁抓取各類類型的文件 8、JSpider JSpider是一個用Java實現的WebSpider,JSpider的執行格式以下: jspider [URL] [ConfigName] URL必定要加上協議名稱,如:http://,不然會報錯。若是省掉ConfigName,則採用默認配置。 JSpider 的行爲是由配置文件具體配置的,好比採用什麼插件,結果存儲方式等等都在conf\[ConfigName]\目錄下設置。JSpider默認的配置種類 不多,用途也不大。可是JSpider很是容易擴展,能夠利用它開發強大的網頁抓取與數據分析工具。要作到這些,須要對JSpider的原理有深刻的了 解,而後根據本身的需求開發插件,撰寫配置文件。 受權協議: LGPL 開發語言: Java 操做系統: 跨平臺 特色:功能強大,容易擴展 9、Leopdo 用JAVA編寫的web 搜索和爬蟲,包括全文和分類垂直搜索,以及分詞系統 受權協議: Apache 開發語言: Java 操做系統: 跨平臺 特色:包括全文和分類垂直搜索,以及分詞系統 10、MetaSeeker 是一套完整的網頁內容抓取、格式化、數據集成、存儲管理和搜索解決方案。 網絡爬蟲有多種實現方法,若是按照部署在哪裏分,能夠分紅: 服務器側: 通常是一個多線程程序,同時下載多個目標HTML,能夠用PHP, Java, Python(當前很流行)等作,能夠速度作得很快,通常綜合搜索引擎的爬蟲這樣作。可是,若是對方討厭爬蟲,極可能封掉你的IP,服務器IP又不容易 改,另外耗用的帶寬也是挺貴的。建議看一下Beautiful soap。 客戶端: 通常實現定題爬蟲,或者是聚焦爬蟲,作綜合搜索引擎不容易成功,而垂直搜訴或者比價服務或者推薦引擎,相對容易不少,這類爬蟲不是什麼頁面都 取的,而是隻取你關係的頁面,並且只取頁面上關心的內容,例如提取黃頁信息,商品價格信息,還有提取競爭對手廣告信息的,搜一下Spyfu,頗有趣。這類 爬蟲能夠部署不少,並且能夠頗有侵略性,對方很難封鎖。 MetaSeeker中的網絡爬蟲就屬於後者。 MetaSeeker工具包利用Mozilla平臺的能力,只要是Firefox看到的東西,它都能提取。 特色:網頁抓取、信息提取、數據抽取工具包,操做簡單 11、Playfish playfish是一個採用java技術,綜合應用多個開源java組件實現的網頁抓取工具,經過XML配置文件實現高度可定製性與可擴展性的網頁抓取工具 應用開源jar包包括httpclient(內容讀取),dom4j(配置文件解析),jericho(html解析),已經在 war包的lib下。 這個項目目前還很不成熟,可是功能基本都完成了。要求使用者熟悉XML,熟悉正則表達式。目前經過這個工具能夠抓取各種論壇,貼吧,以及各種CMS系統。像Discuz!,phpbb,論壇跟博客的文章,經過本工具均可以輕鬆抓取。抓取定義徹底採用XML,適合Java開發人員使用。 使用方法: 下載右邊的.war包導入到eclipse中, 使用WebContent/sql下的wcc.sql文件創建一個範例數據庫, 修改src包下wcc.core的dbConfig.txt,將用戶名與密碼設置成你本身的mysql用戶名密碼。 而後運行SystemCore,運行時候會在控制檯,無參數會執行默認的example.xml的配置文件,帶參數時候名稱爲配置文件名。 系統自帶了3個例子,分別爲baidu.xml抓取百度知道,example.xml抓取個人javaeye的博客,bbs.xml抓取一個採用 discuz論壇的內容。 受權協議: MIT 開發語言: Java 操做系統: 跨平臺 特色:經過XML配置文件實現高度可定製性與可擴展性 12、Spiderman Spiderman 是一個基於微內核+插件式架構的網絡蜘蛛,它的目標是經過簡單的方法就能將複雜的目標網頁信息抓取並解析爲本身所須要的業務數據。 怎麼使用? 首先,肯定好你的目標網站以及目標網頁(即某一類你想要獲取數據的網頁,例如網易新聞的新聞頁面) 而後,打開目標頁面,分析頁面的HTML結構,獲得你想要數據的XPath,具體XPath怎麼獲取請看下文。 最後,在一個xml配置文件裏填寫好參數,運行Spiderman吧! 受權協議: Apache 開發語言: Java 操做系統: 跨平臺 特色:靈活、擴展性強,微內核+插件式架構,經過簡單的配置就能夠完成數據抓取,無需編寫一句代碼 13、webmagic webmagic的是一個無須配置、便於二次開發的爬蟲框架,它提供簡單靈活的API,只需少許代碼便可實現一個爬蟲。 webmagic webmagic採用徹底模塊化的設計,功能覆蓋整個爬蟲的生命週期(連接提取、頁面下載、內容抽取、持久化),支持多線程抓取,分佈式抓取,並支持自動重試、自定義UA/cookie等功能。 webmagic webmagic包含強大的頁面抽取功能,開發者能夠便捷的使用css selector、xpath和正則表達式進行連接和內容的提取,支持多個選擇器鏈式調用。 webmagic的使用文檔:http://webmagic.io/docs/ 查看源代碼:http://git.oschina.net/flashsword20/webmagic 受權協議: Apache 開發語言: Java 操做系統: 跨平臺 特色:功能覆蓋整個爬蟲生命週期,使用Xpath和正則表達式進行連接和內容的提取。 備註:這是一款國產開源軟件,由 黃億華貢獻 1四、Web-Harvest Web-Harvest是一個Java開源Web數據抽取工具。它可以收集指定的Web頁面並從這些頁面中提取有用的數據。Web-Harvest主要是運用了像XSLT,XQuery,正則表達式等這些技術來實現對text/xml的操做。 其實現原理是,根據預先定義的配置文件用httpclient獲取頁面的所有內容(關於httpclient的內容,本博有些文章已介紹),而後運用XPath、XQuery、正則表達式等這些技術來實現對text/xml的內容篩選操做,選取精確的數據。前兩年比較火的垂直搜索(好比:酷訊等)也是採用相似的原理實現的。Web-Harvest應用,關鍵就是理解和定義配置文件,其餘的就是考慮怎麼處理數據的Java代碼。固然在爬蟲開始前,也能夠把Java變量填充到配置文件中,實現動態的配置。 受權協議: BSD 開發語言: Java 特色:運用XSLT、XQuery、正則表達式等技術來實現對Text或XML的操做,具備可視化的界面 15、WebSPHINX WebSPHINX是一個Java類包和Web爬蟲的交互式開發環境。Web爬蟲(也叫做機器人或蜘蛛)是能夠自動瀏覽與處理Web頁面的程序。WebSPHINX由兩部分組成:爬蟲工做平臺和WebSPHINX類包。 受權協議:Apache 開發語言:Java 特色:由兩部分組成:爬蟲工做平臺和WebSPHINX類包 16、YaCy YaCy基於p2p的分佈式Web搜索引擎.同時也是一個Http緩存代理服務器.這個項目是構建基於p2p Web索引網絡的一個新方法.它能夠搜索你本身的或全局的索引,也能夠Crawl本身的網頁或啓動分佈式Crawling等. 受權協議: GPL 開發語言: Java Perl 操做系統: 跨平臺 特色:基於P2P的分佈式Web搜索引擎 Python爬蟲 17、QuickRecon QuickRecon是一個簡單的信息收集工具,它能夠幫助你查找子域名名稱、perform zone transfe、收集電子郵件地址和使用microformats尋找人際關係等。QuickRecon使用python編寫,支持linux和 windows操做系統。 受權協議: GPLv3 開發語言: Python 操做系統: Windows Linux 特色:具備查找子域名名稱、收集電子郵件地址並尋找人際關係等功能 18、PyRailgun 這是一個很是簡單易用的抓取工具。支持抓取javascript渲染的頁面的簡單實用高效的python網頁爬蟲抓取模塊 受權協議: MIT 開發語言: Python 操做系統: 跨平臺 Windows Linux OS X 特色:簡潔、輕量、高效的網頁抓取框架 備註:此軟件也是由國人開放 github下載:https://github.com/princehaku/pyrailgun#readme 19、Scrapy Scrapy 是一套基於基於Twisted的異步處理框架,純python實現的爬蟲框架,用戶只須要定製開發幾個模塊就能夠輕鬆的實現一個爬蟲,用來抓取網頁內容以及各類圖片,很是之方便~ 受權協議: BSD 開發語言: Python 操做系統: 跨平臺 github源代碼:https://github.com/scrapy/scrapy 特色:基於Twisted的異步處理框架,文檔齊全 C++爬蟲 20、hispider HiSpider is a fast and high performance spider with high speed 嚴格說只能是一個spider系統的框架, 沒有細化需求, 目前只是能提取URL, URL排重, 異步DNS解析, 隊列化任務, 支持N機分佈式下載, 支持網站定向下載(須要配置hispiderd.ini whitelist). 特徵和用法: 基於unix/linux系統的開發 異步DNS解析 URL排重 支持HTTP 壓縮編碼傳輸 gzip/deflate 字符集判斷自動轉換成UTF-8編碼 文檔壓縮存儲 支持多下載節點分佈式下載 支持網站定向下載(須要配置 hispiderd.ini whitelist ) 可經過 http://127.0.0.1:3721/ 查看下載狀況統計,下載任務控制(可中止和恢復任務) 依賴基本通訊庫libevbase 和 libsbase (安裝的時候須要先安裝這個兩個庫)、 工做流程: 從中心節點取URL(包括URL對應的任務號, IP和port,也可能須要本身解析) 鏈接服務器發送請求 等待數據頭判斷是否須要的數據(目前主要取text類型的數據) 等待完成數據(有length頭的直接等待說明長度的數據不然等待比較大的數字而後設置超時) 數據完成或者超時, zlib壓縮數據返回給中心服務器,數據可能包括本身解析DNS信息, 壓縮後數據長度+壓縮後數據, 若是出錯就直接返回任務號以及相關信息 中心服務器收到帶有任務號的數據, 查看是否包括數據, 若是沒有數據直接置任務號對應的狀態爲錯誤, 若是有數據提取數據種link 而後存儲數據到文檔文件. 完成後返回一個新的任務. 受權協議: BSD 開發語言: C/C++ 操做系統: Linux 特色:支持多機分佈式下載, 支持網站定向下載 21、larbin larbin是一種開源的網絡爬蟲/網絡蜘蛛,由法國的年輕人 Sébastien Ailleret獨立開發。larbin目的是可以跟蹤頁面的url進行擴展的抓取,最後爲搜索引擎提供普遍的數據來源。Larbin只是一個爬蟲,也就 是說larbin只抓取網頁,至於如何parse的事情則由用戶本身完成。另外,如何存儲到數據庫以及創建索引的事情 larbin也不提供。一個簡單的larbin的爬蟲能夠天天獲取500萬的網頁。 利用larbin,咱們能夠輕易的獲取/肯定單個網站的全部連接,甚至能夠鏡像一個網站;也能夠用它創建url 列表羣,例如針對全部的網頁進行 url retrive後,進行xml的聯結的獲取。或者是 mp3,或者定製larbin,能夠做爲搜索引擎的信息的來源。 受權協議: GPL 開發語言: C/C++ 操做系統: Linux 特色:高性能的爬蟲軟件,只負責抓取不負責解析 22、Methabot Methabot 是一個通過速度優化的高可配置的 WEB、FTP、本地文件系統的爬蟲軟件。 受權協議: 未知 開發語言: C/C++ 操做系統: Windows Linux 特色:過速度優化、可抓取WEB、FTP及本地文件系統 源代碼:http://www.oschina.net/code/tag/methabot C#爬蟲 23、NWebCrawler NWebCrawler是一款開源,C#開發網絡爬蟲程序。 特性: 可配置:線程數,等待時間,鏈接超時,容許MIME類型和優先級,下載文件夾。 統計信息:URL數量,總下載文件,總下載字節數,CPU利用率和可用內存。 Preferential crawler:用戶能夠設置優先級的MIME類型。 Robust: 10+ URL normalization rules, crawler trap avoiding rules. 受權協議: GPLv2 開發語言: C# 操做系統: Windows 項目主頁:http://www.open-open.com/lib/view/home/1350117470448 特色:統計信息、執行過程可視化 24、Sinawler 國內第一個針對微博數據的爬蟲程序!原名「新浪微博爬蟲」。 登陸後,能夠指定用戶爲起點,以該用戶的關注人、粉絲爲線索,延人脈關係蒐集用戶基本信息、微博數據、評論數據。 該應用獲取的數據可做爲科研、與新浪微博相關的研發等的數據支持,但請勿用於商業用途。該應用基於.NET2.0框架,需SQL SERVER做爲後臺數據庫,並提供了針對SQL Server的數據庫腳本文件。 另外,因爲新浪微博API的限制,爬取的數據可能不夠完整(如獲取粉絲數量的限制、獲取微博數量的限制等) 本程序版權歸做者全部。你能夠免費: 拷貝、分發、呈現和表演當前做品,製做派生做品。 你不可將當前做品用於商業目的。 5.x版本已經發布! 該版本共有6個後臺工做線程:爬取用戶基本信息的機器人、爬取用戶關係的機器人、爬取用戶標籤的機器人、爬取微博內容的機器人、爬取微博評論的機器人,以及調節請求頻率的機器人。更高的性能!最大限度挖掘爬蟲潛力! 以如今測試的結果看,已經可以知足自用。 本程序的特色: 6個後臺工做線程,最大限度挖掘爬蟲性能潛力! 界面上提供參數設置,靈活方便 拋棄app.config配置文件,本身實現配置信息的加密存儲,保護數據庫賬號信息 自動調整請求頻率,防止超限,也避免過慢,下降效率 任意對爬蟲控制,可隨時暫停、繼續、中止爬蟲 良好的用戶體驗 受權協議: GPLv3 開發語言: C# .NET 操做系統: Windows 25、spidernet spidernet是一個以遞歸樹爲模型的多線程web爬蟲程序, 支持text/html資源的獲取. 能夠設定爬行深度, 最大下載字節數限制, 支持gzip解碼, 支持以gbk(gb2312)和utf8編碼的資源; 存儲於sqlite數據文件. 源碼中TODO:標記描述了未完成功能, 但願提交你的代碼. 受權協議: MIT 開發語言: C# 操做系統: Windows github源代碼:https://github.com/nsnail/spidernet 特色:以遞歸樹爲模型的多線程web爬蟲程序,支持以GBK (gb2312)和utf8編碼的資源,使用sqlite存儲數據 26、Web Crawler mart and Simple Web Crawler是一個Web爬蟲框架。集成Lucene支持。該爬蟲能夠從單個連接或一個連接數組開始,提供兩種遍歷模式:最大迭代和最大深度。能夠設置 過濾器限制爬回來的連接,默認提供三個過濾器ServerFilter、BeginningPathFilter和 RegularExpressionFilter,這三個過濾器可用AND、OR和NOT聯合。在解析過程或頁面加載先後均可以加監聽器。介紹內容來自Open-Open 開發語言: Java 操做系統: 跨平臺 受權協議: LGPL 特色:多線程,支持抓取PDF/DOC/EXCEL等文檔來源 27、網絡礦工 網站數據採集軟件 網絡礦工採集器(原soukey採摘) Soukey採摘網站數據採集軟件是一款基於.Net平臺的開源軟件,也是網站數據採集軟件類型中惟一一款開源軟件。儘管Soukey採摘開源,但並不會影響軟件功能的提供,甚至要比一些商用軟件的功能還要豐富。 受權協議: BSD 開發語言: C# .NET 操做系統: Windows 特色:功能豐富,絕不遜色於商業軟件 PHP爬蟲 28、OpenWebSpider OpenWebSpider是一個開源多線程Web Spider(robot:機器人,crawler:爬蟲)和包含許多有趣功能的搜索引擎。 受權協議: 未知 開發語言: PHP 操做系統: 跨平臺 特色:開源多線程網絡爬蟲,有許多有趣的功能 29、PhpDig PhpDig是一個採用PHP開發的Web爬蟲和搜索引擎。經過對動態和靜態頁面進行索引創建一個詞彙表。當搜索查詢時,它將按必定的排序規則顯示包含關 鍵字的搜索結果頁面。PhpDig包含一個模板系統並可以索引PDF,Word,Excel,和PowerPoint文檔。PHPdig適用於專業化更 強、層次更深的個性化搜索引擎,利用它打造針對某一領域的垂直搜索引擎是最好的選擇。 演示:http://www.phpdig.net/navigation.php?action=demo 受權協議: GPL 開發語言: PHP 操做系統: 跨平臺 特色:具備採集網頁內容、提交表單功能 30、ThinkUp ThinkUp 是一個能夠採集推特,facebook等社交網絡數據的社會媒體視角引擎。經過採集我的的社交網絡帳號中的數據,對其存檔以及處理的交互分析工具,並將數據圖形化以便更直觀的查看。 ThinkUp ThinkUp 受權協議: GPL 開發語言: PHP 操做系統: 跨平臺 github源碼:https://github.com/ThinkUpLLC/ThinkUp 特色:採集推特、臉譜等社交網絡數據的社會媒體視角引擎,可進行交互分析並將結果以可視化形式展示 31、微購 微購社會化購物系統是一款基於ThinkPHP框架開發的開源的購物分享系統,同時它也是一套針對站長、開源的的淘寶客網站程序,它整合了淘寶、天貓、淘寶客等300多家商品數據採集接口,爲廣大的淘寶客站長提供傻瓜式淘客建站服務,會HTML就會作程序模板,免費開放下載,是廣大淘客站長的首選。 演示網址:http://tlx.wego360.com 受權協議: GPL 開發語言: PHP 操做系統: 跨平臺 ErLang爬蟲 32、Ebot Ebot 是一個用 ErLang 語言開發的可伸縮的分佈式網頁爬蟲,URLs 被保存在數據庫中可經過 RESTful 的 HTTP 請求來查詢。 受權協議: GPLv3 開發語言: ErLang 操做系統: 跨平臺 github源代碼:https://github.com/matteoredaelli/ebot 項目主頁: http://www.redaelli.org/matteo/blog/projects/ebot 特色:可伸縮的分佈式網頁爬蟲 Ruby爬蟲 33、Spidr Spidr 是一個Ruby 的網頁爬蟲庫,能夠將整個網站、多個網站、某個連接徹底抓取到本地。 開發語言: Ruby 受權協議:MIT 特色:可將一個或多個網站、某個連接徹底抓取到本地