爬蟲大全,爬蟲工具彙總

開源爬蟲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 運用 XSLTXQuery、正則表達式等技術來實現對 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 和腳本編輯器、任務監控和項目管理和結果查看。後端系統支持:MySQLMongoDBSQLitePostgresql。支持任務優先級、重試、按期抓取等。  
       
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/

 

 

 

 

 

  • 看你需求了。玩python人喜歡用scrapy,heritrix仍是比較適合整站直接爬取,不去作二次開發。WebCollector比較適合作有精 準抽取抽取業務的爬蟲,很適合作二次開發。Nutch若是你不作搜索引擎,建議不要用,Nutch裏面全是是針對搜索引擎優化的。
  • 看需求了,若是你想研究,就去看一些爬蟲框架,好比Nutch(分佈式的),還有諸如此類的一些。
    若是想進行二次開發,處理js頁面的話,看看phantomjs這種用瀏覽器內核的書寫。
    若是你需求並非很高,本身動手寫一寫小的爬蟲,在在這些小的爬蟲的基礎上慢慢的開發出適合本身的一套框架,解析頁面用jsoup就行了。

     

    http://chenqx.github.io/2014/11/09/Scrapy-Tutorial-for-BBSSpider/

    Perl 作爬蟲也很爽啊,能夠看看mojo框架

    前一陣金融系的同窗委託我寫個Python爬蟲從某小額信貸網站爬訂單細節(公開的),共20萬條,用了多線程仍是嫌慢。比較奇怪的是這麼頻繁的訪問它不封我IP…最後一個搞安全的同窗幫我直接拖庫了。

    1024會短期封IP,用同一個cookie爬就沒事了

    爬蟲下載慢主要緣由是阻塞等待發往網站的請求和網站返回
    解決的方法是採用非阻塞的epoll模型。
    將建立的socket鏈接句柄和回調函數註冊給操做系統,這樣在單進程和單線程的狀況下能夠併發大量對頁面的請求。
    若是以爲本身寫比較麻煩,我用過現成的類庫:tornado的異步客戶端

    若是你打不開增長host或FQ
    host地址:
    74.125.129.121 

     http://www.ibm.com/developerworks/cn/aix/library/au-threadingpython/

     

  • 推薦有質量的WebKit相關技術的網站

    還在持續更新當中。
  • 以前創業公司作過運維總監。爬蟲程序能夠選擇python scrapy架構或者JAVA加多線程中間件用(rabbitmq,activemq等)後端數據(手機號碼,物品信息,comments等)直接存儲到 mysql或者couchdb,mongodb。圖片爬下來以後可存到TFS集羣上特別好我通常不告訴別人。

     

  •  

    用的語言是python。目前想要爬的同花順股票行情(),又一次被javascript卡住。由於一頁中只顯示52條信息,想要看所有的股票數據必須點擊下面的頁碼,是用javascript寫的,沒法直接用urllib2之類的庫處理。試過用webkit(ghost.py)來模擬點擊,   Headless Webkit,開源的有 PhantomJS 等。可以解析並運行頁面上的腳本以索引動態內容是現代爬蟲的重要功能之一。Google's Crawler Now Understands JavaScript: What Does This Mean For You?

  • 我手上正好有個比較好的例子。需求:爬取愛漫畫上的漫畫。問題:圖片的名字命名不規則,經過複雜的js代碼生成圖片的文件名和url,動態加載圖片。js代碼的模式多樣,沒有統一的模式。
    解決:Py8v庫。讀取下js代碼,加一個全局變量追蹤圖片的文件名和url,而後Python和這個變量交互,取得某話圖片的文件名和url。
    全文在此
    【原創】最近寫的一個比較hack的小爬蟲
  • http://www.zhihu.com/question/27693673
  • 公司有一套爬蟲系統,用特定關鍵字在搜索引擎上搜索(如Google,百度),流程大體上,從數據庫批量取出關鍵字,而後生成相關搜索引擎的搜索任務,扔到Queue裏面,後面一羣消費者去爬。多線程的,我想知道如何去設置合理的線程數?

    PS:像數據庫有最大鏈接數控制,因此併發數還好控制。沒有這種限制,我就不會從IO、CPU方面分析了。
  • 爬蟲這種IO密集型,並且是對外網的請求,若是需求的QPS 超過500/s,就用erlang,golang或者其餘語言的epoll庫。不然就啓N個consumer線程處理就行了。爬百度的數據,一個機器的 ip確定是不夠的,先從淘寶上買一堆的http代理肉雞ip回來再搞。
    你這個需求,處理好http代理的問題(設置每一個ip的使用間隔放置被ban),
    io 方面若是超過500的QPS需求,利用erlang actor 是比較好的選擇,若是怕學習成本,能夠使用其餘語言(java 的nio, c++的libevent的http模塊,或者各個語言的epoll封裝) 均可以很好的解決。若是QPS比較低,能夠開N個線程或者線程池處理,注意線程數不要大於( ulimit -u)
    CPU方面,爬蟲服務自己,即便是QPS上一千,一個核心基本能夠搞定,不須要考慮CPU消耗,若是爬回來的數據須要進行處理,建議使用libxml庫,網頁解析是CPU密集型的,建議在生產環境測試一下解析性能。
  • webcollector可定製性強
  • 之前從github上搞到過一個自動爬coursera公開課視頻,slides並建好目錄的腳本,用它爬了不少不少公開課。。。

    而後就束之高閣了。今年再想去用的時候發現網頁結構已經變了。。。
  • 這兩個我都用過,都是通用搜索引擎爬蟲,Heritrix的可定製性強點,有web管理界面使用起來也蠻方便的,可配置的參數不少,但代碼複雜度也蠻高 的,二次開發須要讀懂他的設計思想。Nutch使用起來就蠻複雜的,一堆的設置,基於命令行的,不利於二次開發。我作的是垂直搜索與數據抓取,這些都不適 合,最終仍是選擇本身開發了一個爬蟲,通常來講,咱們最終須要的都不是原始的HTML頁面。咱們須要對爬到的頁面進行分析,將感興趣的數據轉化成結構化的 數據,並存儲下來,這纔是爬蟲的核心價值。
  • 目前來講Java版本的是Lucene,通常能夠考慮Solr+Lucene來實現分佈式的可容災的一個索引和檢索的平臺,若是數據量是海量級別,可參考 Hadoop+Nutch實現,其餘的開源技術框架有,Lily(solr+Hbase+hadoop),zoie(實時搜索引擎),Sphider (Sphider是一個輕量級,採用PHP開發的web spider和搜索引擎)。
  • 用過NUTCH,但只用過其中的抓取部分,索引部分沒有接觸。在垂直抓取方面挺容易上手的,並且基於hadoop,穩定性以及易用性都還能夠,基本上大數量抓取無憂。
    後面由於考慮到挖掘上的須要,以及抓取目標不特定,改用本身寫的了。
  • 如今找到的比較好的框架中有Heritrix和Nutch兩個,
  • 從谷歌創始人的論文《The Anatomy of a Large-Scale Hypertextual Web Search Engine
    》裏能夠看到,谷歌一開始的爬蟲是用Python寫的。

    4.3 Crawling the Web
    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.
    聽說如今改爲了C++,可是我沒有找到明確的材料。
  • 目前是的Why did Google move from Python to C++ for use in its crawler?
  •  

     

    用 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密集型的應用了,分佈式的需求也就有了

    單機爬蟲的主要難點在的異步非阻塞網絡編程,老生常談了。先暫時寫這麼多吧

     

    1. 老老實實的減小請求的頻率,慢慢爬
    2. 若是你 IP 比較多的話,能夠選擇作成分佈式
    3. 若是你有一個訪問量還不錯的網站,果斷寫到頁面上面讓用戶幫你爬
  • 小框架有webharvers,大一點的用nutch也行。
    數據庫比較推薦用nosql,mongodb挺符合需求,建議本身搭框架,比較容易適應各類不一樣的爬抓方向
  • 抓取用NUTCH,能夠脫離hadoop簡單用。抽取若是業務不復雜的話,本身作一套就行了,建議儘可能採用xpath方案,好配,好測,效率高,避免使用正則;存儲的話,千萬級內的,用結構化數據庫,nosql 的沒玩過,不過我想應該沒有mysql易用吧?
  • 國外爬蟲公司列表:
    Custom services:
    DIY products (SaaS):
  • 當爬蟲不遵照robots協議時,有沒有防止抓取的可能?

  • 一種是分析爬蟲特徵,嘗試過濾爬蟲的請求
    另一些可能技巧:
    1. 在頁面開頭放上一些釣魚的連接(通常人點不到),爬蟲會去訪問,一訪問就把對應的ip封了
    2. 頁面全是圖像
    3. 頁面內容用javascript來生成
    4. 頁面上不提供能夠供爬蟲追蹤的連接,跳轉都用js觸發
  • 可是我以爲方法並很差。倘若來的爬蟲是googlebot相似的搜索引擎爬蟲,你這個站豈不是就不要想出如今搜索引擎上了。
    因此我以爲,最最靠譜的方法是在robots.txt裏放上釣魚鏈接。
    正常的搜索引擎不會去訪問,不遵照robots規定的也被禁止了。
    還有就是限制ip的請求次數把。
    可是想徹底杜絕爬蟲是不可能的。由於徹底沒有辦法肯定請求的背後究竟是人仍是爬蟲。
  •  

  • crawler4j

    j-spider

    WebLech
  • 這就是爲啥如今你們都拿Webkit改爲爬蟲啊。去搜crawler based on webkit有一大堆。要對付的問題無非就是這麼幾種:
    1)後期行爲生成/消除的內容
    2)人機讀取頁面的行爲差別
    題主的例子,只要在DOM中找到這個連接元素而後去找它對應渲染的頁面上是否存在就好了。這並非反反爬蟲專用的,事實上用來反SEO這也是經常使用的方法。
  • Socket error 10054 - connection reset by peer 鏈接被遠端重置。 Server併發的鏈接數超過其承載量時,就會把一些鏈接重置掉。若是沒法修改Server段,Client這邊所能作的只有減小併發量
  • golang寫的爬蟲遇到js加載動態內容

    本身寫了一個golang的爬蟲,在抓取網頁的時候,發現部分信息是js運行後生成的,有什麼辦法能夠獲取這些信息
  • 分析js代碼而後用go生成,有時js混淆得好或者算法詭異,分析不是很容易。
    或者直接用cgo跑WebkitGTK+,也就是PhantomJS的套路,sourcegraph作了個。
    sourcegraph/webloop · GitHub
  • python下有個ghost.py入門簡單,能夠試試
  • 你能夠試試換一種思路, 去GoDaddy的註冊頁試試, 不斷提交域名到搜索接口, 它會告訴你是否這個域名有沒有被註冊的~~~
  • 要代碼的話萬能圖片爬蟲這裏有
  • 如何維護爬蟲程序中的代理ip庫

  •  

    代理ip有的變得鏈接很慢,甚至連不上,有什麼樣的機制可讓ip列表保持較好的可用性?
    第一,從API接口獲取100個代理IP,備用。API接口能夠百度搜下全網代理IP,他們有提供;

    第二,響應速度慢的直接刪除;若是列表刪除沒了,重複執行第一步;

    第三,從IP列表中獲取一個IP訪問目標網址,若是這個IP訪問失敗,從IP庫刪除這個IP,從新執行第三部。 

    把響應時間紀錄下來

  • 目前反爬蟲機制有哪些手段,使用代理ip來規避的作法用nodejs具體要怎麼作?修改

    目前我初學爬蟲,儘管簡單的數據能抓下來,可是看了不少文章,裏面有提到一些反爬蟲的機制的,好比這兩篇:
    互聯網網站的反爬蟲策略淺析
    Python簡單抓取原理引出分佈式爬蟲
    這裏面都提到了用ip來反爬蟲,第二篇文章也提到了用代理池來避免,可是仍是不大明白,這些代理ip若是用nodejs要怎麼弄? 修改
     
    對於淘寶(不開放API的) 通常的透明代理一點用都沒有
     
     
    這個並非亂碼, 
    只是存儲時會做爲unicode來存,顯示的時候會是中文的
    print u'\u4e0d\u662f\u4e71\u7801' , 便可顯示中文
     

    python 如何抓取動態頁面

    我找過用webkit pyQt spynner 和 ghost的,具體怎麼操做?
    我想封裝成一個輸入url而後獲得最後html的功能
    頁面抓取與動態靜態無關,重要的是模擬瀏覽器、用戶行爲。
    關鍵點:
    1. 假裝瀏覽器(user agent等)
    2. 假裝用戶行爲(cookie,session維護,驗證碼等)
    可以作到這兩點,不管你用什麼抓取工具/包,或者urllib2,都沒有質的差異。
    splinter
    用firefox的分析工具,進行抓包分析。
    推薦一個很好的blog: 在路上
    裏面有不少python抓取的教程,最關鍵是,代碼都是全的能夠跑出來的,我已經試過了
     
     
    • 熟悉python、熟悉爬蟲框架的話,能夠用scrapy,缺點在於它依賴的庫特別特別多。
    • 初學爬蟲的話,http請求用urllib二、urllib(後者幾乎僅用來編碼post數據),字符串解析用BeautifulSoup或者其餘相似的,BeautifulSoup很是易學,其餘的沒用過
    • 進階的話用selenium+phantom(或者Chrome、FireFox等),這就是一個功能完善的瀏覽器了,既能夠用於http請求,也能夠解析網頁,都很是方便
     
     
    搜索C++ HTTP,C++ HTML解析不就有答案了
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     

     

  • Beautiful Soup。名氣大,整合了一些經常使用爬蟲需求。缺點:不能加載JS。
  • Scrapy。看起來很強大的爬蟲框架,能夠知足簡單的頁面爬取(好比能夠明確獲知url pattern的狀況)。用這個框架能夠輕鬆爬下來如亞馬遜商品信息之類的數據。可是對於稍微複雜一點的頁面,如weibo的頁面信息,這個框架就知足不了需求了。
  • mechanize。優勢:能夠加載JS。缺點:文檔嚴重缺失。不過經過官方的example以及人肉嘗試的方法,仍是勉強能用的。
  • selenium。這是一個調用瀏覽器的driver,經過這個庫你能夠直接調用瀏覽器完成某些操做,好比輸入驗證碼。
  • cola。一個分佈式爬蟲框架。項目總體設計有點糟,模塊間耦合度較高,不過值得借鑑。

如下是個人一些實踐經驗:

  • 對於簡單的需求,好比有固定pattern的信息,怎麼搞都是能夠的。
  • 對於較爲複雜的需求,好比爬取動態頁面、涉及狀態轉換、涉及反爬蟲機制、涉及高併發,這種狀況下是很難找到一個契合需求的庫的,不少東西只能本身寫。

至於題主提到的:

還有,採用現有的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

http://crawler.archive.org/

簡介

與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不錯

 

 
主要看你定義的「爬蟲」幹什麼用。
一、若是是定向爬取幾個頁面,作一些簡單的頁面解析, 爬取效率不是核心要求,那麼用什麼語言差別不大。
固然要是頁面結構複雜,正則表達式寫得巨複雜,尤爲是用過那些支持xpath的類庫/爬蟲庫後,就會發現此種方式雖然入門門檻低,但擴展性、可維護性等都奇差。所以此種狀況下仍是推薦採用一些現成的爬蟲庫,諸如xpath、多線程支持仍是必須考慮的因素。
二、若是是定向爬取,且主要目標是解析js動態生成的內容
此時候,頁面內容是有js/ajax動態生成的,用普通的請求頁面->解析的方法就無論用了,須要藉助一個相似firefox、chrome瀏覽器的js引擎來對頁面的js代碼作動態解析。
此種狀況下,推薦考慮casperJS+phantomjs或slimerJS+phantomjs ,固然諸如selenium之類的也能夠考慮。

三、若是爬蟲是涉及大規模網站爬取,效率、擴展性、可維護性等是必須考慮的因素時候
大規模爬蟲爬取涉及諸多問題:多線程併發、I/O機制、分佈式爬取、消息通信、判重機制、任務調度等等,此時候語言和所用框架的選取就具備極大意義了。
PHP對多線程、異步支持較差,不建議採用。
NodeJS:對一些垂直網站爬取倒能夠,但因爲分佈式爬取、消息通信等支持較弱,根據本身狀況判斷。
Python:強烈建議,對以上問題都有較好支持。尤爲是Scrapy框架值得做爲第一選擇。優勢諸多:支持xpath;基於twisted,性能不錯;有較好的調試工具;
此種狀況下,若是還須要作js動態內容的解析,casperjs就不適合了,只有基於諸如chrome V8引擎之類本身作js引擎。
至於C、C++雖然性能不錯,但不推薦,尤爲是考慮到成本等諸多因素;對於大部分公司仍是建議基於一些開源的框架來作,不要本身發明輪子,作一個簡單的爬蟲容易,但要作一個完備的爬蟲挺難的。

像我搭建的微信公衆號內容聚合的網站 就是基於Scrapy作的,固然還涉及消息隊列等。能夠參考下圖:
 

 

 

簡單的定向爬取:
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
特色:可將一個或多個網站、某個連接徹底抓取到本地
相關文章
相關標籤/搜索