五十種最好的開源爬蟲


Python編寫的開源Web爬蟲

1. Scrapy

簡介

  • Scrapy是一種高速的高層Web爬取和Web采集框架,可用於爬取網站頁面,並從頁面中抽取結構化數據。
  • Scrapy的用途廣泛,適用於從數據挖掘、監控到自動化測試。
  • Scrapy設計上考慮了從網站抽取特定的信息,它支持使用CSS選擇器和XPath表達式,使開發人員可以聚焦於實現數據抽取。
  • 對於熟悉Python的開發人員,只需幾分鍾就能建立並運行Scrapy。
  • 支持運行在Linux、Mac OS和Windows系統上。

特性

  • 內置支持從HTML和XML抽取數據、使用擴展的CSS選擇器(Selector)和XPath表達式等特性。
  • 支持以多種格式(JSON、CSV、XML)生成輸出。
  • 基於Twisted構建。
  • 穩健的支持,自動檢測編碼方式。
  • 快速,功能強大。

官方文檔https://docs.scrapy.org/en/latest/

官方網站https://scrapy.org/

2. Cola

簡介

  • Cola是一種高層分布式爬取框架,實現從網站爬取網頁,並從中抽取結構化數據。
  • 它提供了一種實現目標數據獲取的簡單且靈活的方式。
  • 用戶只需要編寫其中一部分代碼,就可在本地和分布式環境下運行。

特性

  • 高層分布式爬取框架。
  • 簡單且高速。
  • 靈活。

官方文檔https://github.com/chineking/cola

官方網站https://pypi.org/project/Cola/

3. Crawley

簡介

  • Crawley是一種Python爬取和采集框架,意在簡化開發人員從Web網頁抽取數據到數據庫等結構化存儲中。

特性

  • 基於Eventlet構建的高速Web爬蟲。
  • 支持MySQL、PostgreSQL、Oracle、Sqlite等關系數據庫引擎。
  • 支持MongoDB、CouchDB等NoSQL數據庫(最新特性!)。
  • 支持導出數據為JSON、XML和CSV格式(最新特性!)。
  • 命令行工具。
  • 支持開發人員使用自己喜好的工具,例如XPath或Pyquery(一種類似於JQuery的Python軟件庫)等。
  • 支持Cookie處理器(Handler)。

官方文檔https://pythonhosted.org/crawley/

官方網站http://project.crawley-cloud.com/

4. MechanicalSoup

簡介

  • MechanicalSoup是一種設計模擬人類使用Web瀏覽器行為的Python軟件庫,它基於解析軟件庫BeautifulSoup構建。
  • 如果開發人員需要從單個站點采集數據,或是不需要大量數據采集,那么使用MechanicalSoup是一種簡單高效的方法。
  • MechanicalSoup自動存儲和發送Cookie、跟蹤重定向、支持鏈接跟隨和提交表單。

特性

  • 輕量級。
  • 支持Cookie處理器。

官方文檔https://mechanicalsoup.readthedocs.io/en/stable/

官方網站https://mechanicalsoup.readthedocs.io/

5. PySpider

簡介

  • PySpider是一種Python編寫的強大Web爬蟲。
  • 它支持JavaScript網頁,並具有分布式架構。
  • PySpider支持將爬取數據存儲在用戶選定的后台數據庫,包括MySQL, MongoDB, Redis, SQLite, Elasticsearch等。
  • 支持開發人員使用RabbitMQ、Beanstalk和Redis等作為消息隊列。

特性

  • 提供強大Web界面,具有腳本編輯器、任務監控、項目管理器和結果查看器。
  • 支持對重度Ajax網站的爬取。
  • 易於實現適用、快速的爬取。

官方文檔http://docs.pyspider.org/

官方網站https://github.com/binux/pyspider

6. Portia

簡介

  • Portia是由Scrapinghub創建的一種可視化爬取工具,它不需要用戶具有任何程序開發知識。
  • 如果用戶並非開發人員,最好直接使用Portia實現Web爬取需求。
  • 用戶無需任何安裝就可免費試用Portia,只需要在Scrapinghub注冊一個賬戶,就可使用托管版本。
  • 即便用戶沒有編程技能,在Portia中創建爬蟲並抽取Web內容也是非常易於實現的。
  • 用戶無需安裝任何程序,因為Portia是運行在Web頁面上的。
  • 用戶可以使用Portia的基本點擊工具標注需要爬取的數據,然后Portia就會根據這些標注理解如何爬取類似頁面中的數據。
  • 一旦檢測到需要爬取的頁面,Portia會形成一個用戶已創建結構的實例。

特性

  • 通過記錄並回放用戶在頁面上的操作,實現點擊、拖動和等待等動作。
  • Portia可以很好地爬取基於Ajax構建的網站(基於Splash),也適用於爬取Backbone、Angular和Ember等重度JavsScript框架。

官方文檔https://portia.readthedocs.io/en/latest/index.html

官方網站https://github.com/scrapinghub/portia

7. Beautifulsoup

簡介

  • Beautiful Soup一種設計用於實現Web爬取等快速數據獲取項目的Python軟件庫。
  • 它在設計上處於HTML或XML解析器之上,提供用於迭代、搜索和修改解析樹等功能的Python操作原語。往往能為開發人員節省數小時乃至數天的工作。

特性

  • Beautiful Soup自動將輸入文檔轉換為Unicode編碼,並將輸出文檔轉換為UTF-8編碼。
  • Beautiful Soup處於一些廣為采用的Python解析器(例如,lxmlhtml5lib)之上,支持用戶嘗試使用多種不同的解析策略,並在速度和靈活性上做出權衡。

官方文檔https://www.crummy.com/software/BeautifulSoup/bs4/doc/

官方網站https://www.crummy.com/software/BeautifulSoup/

8. Spidy爬蟲

簡介

  • Spidy是一種從命令行運行的Web爬蟲。易於使用。用戶只需提供Web網頁的URL鏈接,Spidy就可以開始爬取!Spidy無疑是一種整體爬取Web的簡單有效的方式。
  • Spidy使用Python請求查詢Web頁面,並使用lxml抽取頁面中的所有鏈接。非常簡單!

特性

  • 錯誤處理。
  • 跨平台兼容性。
  • 頻繁時間戳日志。
  • 可移植性。
  • 用戶友好的日志。
  • 保存Web頁面。
  • 支持文件壓縮。

官方文檔https://github.com/rivermont/spidy

官方網站http://project.crawley-cloud.com/

9. Garb

簡介

  • Grab是一種用於構建爬蟲的Python框架。
  • 使用Grab可構建出各種復雜度的Web爬蟲,從只有五行代碼的腳本,到可處理百萬量級Web頁面的復雜異步爬蟲。
  • Grab提供了執行網絡請求、處理接收內容的API。例如,實現與HTML文檔的DOM樹進行交互。

特性

  • 支持HTTP和SOCKS代理,可使用也可不使用認證。
  • 自動字符集檢測。
  • 強大的API,支持使用XPath查詢從HTML文檔的DOM樹中抽取數據。
  • 自動Cookie(或會話)支持。

官方文檔https://grablib.org/en/latest/

官方網站https://github.com/lorien/grab

Java編寫的開源Web爬蟲

10. Apache Nutch

簡介

  • Apache Nutch是一種高度可擴展、可伸縮的開源Web爬蟲軟件項目。
  • 如果要列出最好的開源Web爬蟲列表,Apache Nutch無疑金榜題名。
  • 作為一種用於數據挖掘的高度可擴展、可伸縮的開源代碼Web數據抽取軟件項目,Apache Nutch得到了廣泛的使用。
  • Nutch支持單機運行,但是在Hadoop集群上運行可最大化地發揮其強大能力。
  • 全球范圍內很多數據分析人員和科研人員、應用開發人員和Web文本挖掘工程師都在使用Apache Nutch。
  • Apache Nutch是一種Java編寫的跨平台解決方案。

特性

  • 默認情況下,爬取數據和分析數據是獨立的過程。
  • 廣泛支持多種文檔格式,包括純文本、HTML/XHTML+XML、XML、PDF、ZIP等。
  • 使用XPath和命名空間實現映射。
  • 通過Hadoop支持分布式文件系統。
  • 鏈接圖形式的數據庫。
  • 支持NTLM認證。

官方文檔https://wiki.apache.org/nutch/

官方網站http://nutch.apache.org/

11. Heritrix

簡介

  • 在使用Java編寫的免費開源Web爬蟲中,Heritrix是其中一種得到廣泛使用的工具。事實上,它是一種可擴展、Web規模、存檔質量(archival-quality)的Web爬取項目。
  • Heritrix是一種擴展能力和性能很好的解決方案,支持用戶即刻爬取並歸檔一組網站。此外,它在設計上考慮了robots.txt禁止規則和META機器人標簽。
  • Heritrix可運行在Linux/Unix和Windows系統上。

特性

  • HTTP認證。
  • NTLM認證。
  • 鏈接抽取中的XSL轉換。
  • 獨立於搜索引擎。
  • 是一種成熟並穩定的平台。
  • 高度可配置。
  • 支持在任一機器上運行。

官方文檔https://github.com/internetarchive/heritrix3/wiki/Heritrix%203.0%20and%203.1%20User%20Guide

官方網站https://github.com/internetarchive/heritrix3b

12. ACHE爬蟲

簡介

  • ACHE是一種專用於特定用途的Web爬蟲。
  • ACHE爬取滿足特定標准的Web頁面。例如,屬於特定領域並包含用戶指定模式的頁面。
  • 不同於通用爬蟲,ACHE使用頁面分類器遴選特定領域中的相關和無關頁面。
  • 頁面分類器可以是基本的正則表達式(例如,匹配所有包含給定單詞的頁面),也可以基於機器學習的分類模型。ACHE也可以自動學習如何對鏈接做優先處理,實現高效地定位相關內容,避免檢索無關的頁面內容。

特性

  • 對固定網站列表的正常爬取。
  • 通過自動鏈接優先處理,發現並爬取新的相關網站。
  • 可配置不同類型的頁面分類器(例如,機器學習、正則表達式等)。
  • 持續重新爬取站點,實現頁面更新的發現。
  • 使用ElasticSearch對爬取頁面做索引。
  • 實時搜索爬取頁面的Web接口。
  • 用於監控爬蟲的REST API和基於Web的用戶接口。
  • 使用TOR代理爬取隱含服務。

官方文檔http://ache.readthedocs.io/en/latest/

官方網站https://github.com/ViDA-NYU/ache

13. Crawler4j

簡介

  • crawler4j是一種Java編寫的開源Web爬蟲,提供了爬取Web網站的基本接口。
  • 開發人員可以使用crawler4j在數分鍾內建立一個多線程Web爬蟲。

官方文檔https://github.com/yasserg/crawler4j

官方網站https://github.com/yasserg/crawler4j

14. Gecco

簡介

  • Gecco是一種使用Java開發的輕量級Web爬蟲,易於使用。
  • Gecco集成了jsoup、httpclient、fastjson、spring、htmlunit、redission等優秀框架。用戶只需要配置一系列jQuery風格選擇器,就能很快地建立一個爬蟲。
  • Gecco框架具有優秀的擴展能力。框架基於一些開放式和封閉式設計原則,對改進封閉,對擴展開放。

特性

  • 易於使用,使用jQuery風格選擇器抽取元素。
  • 支持頁面中的異步Ajax請求。
  • 支持頁面JavaScript變量抽取。
  • 使用Redis實現分布式爬取(參見gecco-redis文檔)。
  • 支持使用Spring開發業務邏輯(參見gecco-spring文檔)。
  • 支持htmlunit擴展(參見gecco-htmlunit文檔)。
  • 支持多種擴展機制。
  • 支持下載UserAgent的隨機選擇。
  • 支持下載代理服務器的隨機選取。

官方文檔https://github.com/xtuhcy/gecco

官方網站https://github.com/xtuhcy/gecco

15. BUbiNG

簡介

  • BUbiNG令人驚喜,它可稱為下一代的開源Web爬蟲。BUbiNG是一種Java開發的完全分布式爬蟲(無需中央協調),每秒可爬取數千個網頁,並支持采集大規模數據集。
  • BUbiNG的分布式是基於高速協議實現的,因此可以獲得非常高的通量。
  • BUbiNG提供對海量數據的大規模爬取。它完全可配置、易於擴展,並可集成垃圾信息檢測。

特性

  • 高度並行。
  • 完全分布式。
  • 使用JAI4J。JAI4J是一種基於JGroups實現的瘦功能層,實現任務指派。
  • (當前)使用剝離網頁的指紋,檢測近似的重復內容。
  • 快速。
  • 大規模爬取。

官方文檔http://law.di.unimi.it/software/bubing-docs/index.html

官方網站http://law.di.unimi.it/software.php#bubing

16. Narconex

簡介

  • 對於尋求可滿足企業級需求的開源Web爬蟲的用戶而言,Narconex是一種很好的工具。
  • Norconex支持用戶爬取任何Web內容。用戶可以獨立運行這種全功能數據采集器,或是將其集成在自己的應用中。
  • 支持所有操作系統。可在具有一般容量的單體服務器上爬取數百萬信息。此外,Narconex提供多種內容和元數據操作特性,還可以抽取頁面中特定的圖像。

特性

  • 多線程。
  • 支持按各種計划任務,抽取不同時間段的數據。
  • 從HTML、Word、PDF等多種文件格式中抽取文本內容。
  • 抽取文檔相關的元數據。
  • 支持抽取使用用JavaScript渲染的頁面。
  • 檢測語言。
  • 支持翻譯。
  • 可配置爬取速度。
  • 可檢測發生修改或已被刪除的文檔。
  • 支持使用外部命令分析或操作文檔。

官方文檔http://www.norconex.com/collectors/collector-http/getting-started

官方網站http://www.norconex.com/collectors/collector-http/

17. WebSPHINX

  • 實現語言: Java
  • 當前尚不提供官方支持。

簡介

  • WebSphinix是一種非常易於使用的可定制Web爬蟲。它設計用於高級Web用戶和Java編程人員,支持他們自動爬取小部分Web。
  • WebSphinix數據抽取解決方案也提供了一種全面的Java類庫和交互式軟件開發環境。WebSphinix包括兩部分:爬蟲基准測試(Crawler Workbench),WebSPHINX類庫。
  • 爬蟲基准測試提供了很好的用戶圖形接口,支持用戶配置並控制定制的Web爬蟲。
  • WebSPHINX類庫為使用Java編寫Web爬蟲提供支持。
  • WebSphinix支持運行在Windows、Linux、Mac和Android IOS上。

特性

  • 以圖的方式可視化Web頁面采集。
  • 將多個頁面組合為單個文檔,以供查看和打印。
  • 支持抽取所有滿足設定模式的文本。
  • 支持HTML解析。
  • 支持robot.txt禁止標准。
  • 通用HTML轉換。
  • 多線程Web頁面檢索。

官方文檔https://www.cs.cmu.edu/~rcm/websphinx/doc/index.html

官方網站https://www.cs.cmu.edu/~rcm/websphinx/#about

18. Spiderman

簡介

  • Spiderman是一種Java開源Web數據抽取工具。它采集特定的Web頁面,並從中抽取有用數據。
  • Spiderman主要使用XPath和正則表達式等技術抽取實際數據。

特性

官方網站https://gitee.com/l-weiwei/spiderman

19. WebCollector :

簡介

  • WebCollector是一種基於Java的開源Web爬蟲框架。
  • 它為實現Web爬取功能提供了一下基本的接口。用戶可以使用它在五分鍾內建立起一個多線程爬蟲。

特性

  • 快速。

官方文檔https://github.com/CrawlScript/WebCollector

官方網站https://github.com/CrawlScript/WebCollector

20. Webmagic

簡介

  • WebMagic是一種可擴展的爬蟲框架。
  • WebMagic涵蓋了爬蟲的整個生命周期,包括下載、URL管理、內容抽取和持久化。
  • 可用於簡化一些特定爬蟲的開發。

特性

  • 高度靈活的簡單內核。
  • 提供實現HTML抽取的簡單API。
  • 使用POJO標注定制爬蟲,無需配置。
  • 支持多線程和分布式。
  • 易於集成。

官方文檔http://webmagic.io/docs/en/

官方網站https://github.com/code4craft/webmagic

21. StormCrawler

簡介

  • StormCrawler是一種基於Apache Storm構架分布式Web爬蟲的開源SDK。
  • StormCrawler為開發人員構建爬蟲提供了軟件庫和一系列資源。
  • StormCrawler完全適用於以數據流提供需獲取和解析的URL的情況,也非常適用於大規模遞歸性爬取,尤其是需要低延遲的情況。

特性

  • 可擴展。
  • 有彈性。
  • 低延遲。
  • 易於擴展。
  • 運行良好且高效。

官方文檔http://stormcrawler.net/docs/api/

官方網站http://stormcrawler.net/

JavaScript編寫的開源Web爬蟲

22. NodeCrawler

簡介

  • NodeCrawler是一種廣為使用的Web爬蟲,它基於NodeJS實現,具有非常快的爬取速度。
  • Nodecrawler非常適用於偏愛使用JavaScript編程或者致力於JavaScript項目的開發人員。其安裝也非常簡單。
  • JSDOM和Cheerio(用於HTML解析)實現服務器端渲染。其中,JSDOM更為穩定。

特性

  • 使用 Cheerio(默認)或JSDOM實現服務端DOM和自動jQuery插入。
  • 可配置池子規模和重試次數。
  • 控制爬取率限制。
  • 請求的優先隊列。
  • 支持forceUTF8模式,使得爬蟲可以檢測並轉換字符集。
  • 與4.x乃至更新版本兼容。

官方文檔https://github.com/bda-research/node-crawler

官方網站http://nodecrawler.org/

23. Simplecrawler

簡介

  • Simplecrawler設計提供基本的、靈活且穩定的網站爬取API。
  • Simplecrawler在實現上考慮了針對特大型Web站點的歸檔、分析和搜索。它可爬取上百萬頁面,並毫無問題地向磁盤寫入數十GB數據。

特性

  • 提供了用於自動檢測鏈接資源的一些簡單邏輯,用戶可自行替換和添加。
  • 自動請求任何robots.txt禁止規則。
  • 具有靈活的隊列系統,可在磁盤上凍結和解凍。

官方文檔https://github.com/simplecrawler/simplecrawler

官方網站https://www.npmjs.com/package/simplecrawler

24. Js-crawler :

簡介

  • 使用NodeJS實現的Web爬蟲,支持HTTP和HTTPS

官方文檔https://github.com/antivanov/js-crawler

官方網站https://github.com/antivanov/js-crawler

25. Webster

簡介

  • Webster是一種使用NodeJS編寫的可靠Web爬取和采集框架,用於爬取Web站點並從頁面中抽取結構化數據。
  • 與其他爬取框架的不同之處在於,Webster可以抓取瀏覽器客戶端的JavaScript和Ajax請求呈現的內容。

官方文檔http://webster.zhuyingda.com/

官方網站https://github.com/zhuyingda/webster

26. Node-osmosis

簡介
* 一種使用NodeJS實現的HTML/XML解析器和Web爬蟲。

特性

  • 使用原生libxml的C綁定。
  • 干凈的Promise類接口。
  • 支持CSS 3.0和XPath 1.0選擇器的混合。
  • Sizzle選擇器Slick選擇器以及更多
  • 不具有像jQuery、cheerio或jsdom那樣的大型依賴。
  • 構成深度和復雜的數據結構。
  • HTML解析器特性:
    • 快速解析;
    • 高速搜索;
    • 內存占用小。
  • HTML DOM特性:
    • 加載和搜索ajax內容;
    • DOM交互和事件;
    • 執行嵌入和遠程腳本;
    • 在DOM中執行代碼。
  • HTTP請求特性:
    • 日志記錄URL,重定向和錯誤;
    • Cookie的jar包,以及自定義Cookie/頭部/用戶代理;
    • 登錄/表單提交、會話Cookie,基本的認證;
    • 單代理、多代理,處理代理失敗情況;
    • 限制重試和重定向。

官方文檔https://rchipka.github.io/node-osmosis/global.html

官方網站https://www.npmjs.com/package/osmosis

27. Supercrawler

簡介

  • Supercrawler是一種使用NodeJS實現的Web爬蟲,在設計上支持高度可配置和易用性。
  • 一旦成功爬取一個網頁(可以是圖像、文本文檔或其他任何文件),Supercrawler將會觸發用戶自定義的內容類型(content-type)處理器,處理頁面解析、保存數據以及其它一些用戶定義的功能。

特性

  • 鏈接檢測:Supercrawler會解析所爬取的HTML文檔,識別其中鏈接並添加到隊列中。
  • 機器人解析:在爬取前Supercrawler會請求robots.txt並檢查其中的禁止規則。它也可識別站點地圖。
  • 站點地圖解析:Supercrawler可以從XML站點地圖文件中讀取鏈接,並將鏈接添加到隊列中。
  • 並發限制:Supercrawler可限制在任一時間發出的請求數。
  • 速率限制:Supercrawler可添加請求的時延,以免對服務器產生轟炸。
  • 指數補償(Exponential backoff)重試:Supercrawler將依此在一小時、兩小時、四小時乃至更多時間后重試請求。要使用該特性,爬取隊列必須使用數據庫或Redis作為后端。
  • 主機名均衡:Supercrawler可在不同主機名間平均分割請求量。要使用該特性,爬取隊列必須以Redis為后端。

官方文檔https://github.com/brendonboshell/supercrawler

官方網站https://github.com/brendonboshell/supercrawler

28. Web scraper的Chrome擴展

簡介

  • Web Scraper是一種Chrome瀏覽器擴展,構建用於從Web頁面抽取數據。
  • 用戶可以使用該擴展創建計划(站點地圖),定義如何遍歷一個Web網站,以及如何從中抽取數據。
  • Web Scraper使用站點地圖相應地遍歷網站,並從中抽取數據。
  • 支持以CSV格式導出所抽取的數據。

特性

  • 抽取多個頁面。
  • 站點地圖和抽取的數據存儲在瀏覽器的本地存儲,也可存儲在CouchDB中。
  • 多種數據類型選取。
  • 支持從動態網頁(JavaScript+AJAX)抽取數據。
  • 瀏覽抽取的數據。
  • 以CSV格式導出抽取的數據。
  • 導入、導出站點地圖。
  • 只依賴於Chrome瀏覽器。

官方文檔https://www.webscraper.io/documentation

官方網站https://www.webscraper.io

29. Headless Chrome爬蟲

簡介

  • 使用基本HTML文件請求的爬蟲,通常速度很快。但這樣的爬蟲往往會抽取到空白內容,尤其是在爬取使用AngularJS、React和Vue.js等現代前端框架構建的網站時。

特性

  • 分布式爬取。
  • 可配置並發、延遲和重試。
  • 支持深度優先搜索和廣度優先搜索算法。
  • 支持插拔緩存存儲,例如Redis。
  • 支持導出CSV和JSON。
  • 在達到最大請求時暫停爬取,並可在任一時刻恢復。
  • 自動插入用於抽取的jQuery。
  • 保存屏幕截圖,用於證實爬取過程。
  • 模擬設備和用戶代理。
  • 具有優先隊列,可提高爬取效率。

官方文檔https://github.com/yujiosaka/headless-chrome-crawler/blob/master/docs/API.md

官方網站https://github.com/yujiosaka/headless-chrome-crawler

30. X-ray

特性

  • 模式靈活:支持字符串、數組、對象以及嵌套對象結構。模式並非綁定於所抽取的頁面結構,支持用戶獲取選定結構中的數據。
  • 可組合(Composable):API是完全可組合的,賦予用戶抽取每個頁面的極大靈活性。
  • 分頁支持:爬取頁面在Web站點上的所有分頁。X-ray還支持請求延遲和分頁限制,並支持將爬取頁面導入到單個文件中。這樣一旦單個頁面產生錯誤,用戶不會失去所有已爬取的數據。
  • 爬蟲支持:從一個頁面開始,輕易跳轉另一個頁面。頁面跳轉是可預測的,按深度優先爬取所有頁面。
  • 負責任的爬取:X-ray支持並發、限制、延遲、超時和限制,實現負責任地爬取任何頁面。
  • 可插拔驅動:可按用戶需求置換不同的爬蟲。

官方文檔https://github.com/matthewmueller/x-ray

官方網站https://www.npmjs.com/package/x-ray-scraper

C編寫的開源Web爬蟲

31. Httrack

簡介

  • HTTracks是一項免費(GPL、Libre/自由軟件)且易於使用的離線瀏覽器功能。
  • 支持用戶將Web站點下載到本地目錄,遞歸構建全部目錄,以及獲取HTML、圖像和其它文件到本地計算機。
  • HTTrack會維持原站點的相對鏈接結構。用戶可以用瀏覽器打開本地的“鏡像”頁面,並逐個鏈接瀏覽,與在線瀏覽無異。
  • HTTrack也支持對已有鏡像站點的更新,以及從中斷點恢復下載。
  • HTTrack高度可配置,並提供幫助文檔。

特性

  • 多語言窗口,提供對Linux/UNIX的接口。
  • 鏡像單個站點,或是一並鏡像多個站點。
  • 支持按文件類型、鏈接位置、結構深度、文件大小過濾,接受或拒絕站點或文件名。
  • 支持代理,可最大化速度,並可選認證。

官方文檔http://www.httrack.com/html/index.html

官方網站http://www.httrack.com/

32. GNU Wget

簡介

  • GNU Wget是一種免費軟件包,它使用HTTP、HTTPS、FTP、FTPS等廣為使用的互聯網協議檢索文件。
  • Wget是一種非交互式命令行工具,易於從腳本、Cron任務、不具有X窗口支持的終端等處調用。

特性

  • 使用REST和RANGE支持從中斷處恢復下載。
  • 基於NLS的消息文件,可使用多種語言。
  • 可運行於大多數類UNIX操作系統上,也支持Windows.
  • 支持HTTP代理。
  • 支持HTTP Cookie。

官方文檔https://www.gnu.org/software/wget/manual/

官方網站https://www.gnu.org/software/wget/

C++編寫的開源Web爬蟲

33. gigablast

簡介

  • Gigablast是一種開源的Web和企業搜索引擎,也是一種爬蟲。
  • Gigablast是自身維護數十億頁面檢索索引的數家美國搜索引擎之一。

特性

  • 大規模。
  • 高性能。
  • 實時信息檢索技術。

官方文檔http://www.gigablast.com/api.html

官方網站http://www.gigablast.com/

C#編寫的開源Web爬蟲

34. Arachnode.net

簡介

  • Arachnode.net適用於尋求開源Web爬蟲的C#開發人員。
  • Arachnode.net軟件類庫從因特網下載內容、對內容做索引,並對過程做定制。
  • 用戶可使用該工具做個人內容聚合,也可用於將下載的內容抽取、采集和解析為多個表單。
  • Arachnode.net索引所發現的內容,並存儲在Lucene.NET索引中。
  • Arachnode.net非常適用於文本挖掘,也適用於學習高級爬取技術。

特性

  • 可配置規則和行為。
  • 集成Lucene.NET。
  • 支持SQL Server和全文本索引。
  • 支持對.DOC/.PDF/.PPT/.XLS等文件類型的索引。
  • 支持將HTML轉化為XML和XHTML。
  • 支持全部JavaScript/AJAX功能。
  • 支持多線程和節流(Throttling)。
  • 行為適當(Respectful)的爬取。
  • 分析服務。

官方文檔https://documentation.arachnode.net/index.html

官方網站http://arachnode.net/

35. Abot

簡介

  • Abot是一種C#實現的開源Web爬蟲,主要側重於速度和靈活性。
  • Abot在實現中考慮了底層技術細節,包括多線程、HTTP請求、調度、鏈接解析等。
  • 用戶只需注冊事件,就可以處理分頁數據。
  • 支持用戶插入自己的核心接口實現,實現對整個爬取過程的完全控制。

特性

  • 高速!
  • 易於定制(可插拔架構,支持用戶定義爬取內容和方式)。
  • 經過大量的單元測試(高代碼覆蓋率)。
  • 非常輕量級(並非過度工程化)。
  • 無過程之外的依賴,例如對數據庫、所安裝服務等的依賴。

官方文檔https://github.com/sjdirect/abot

官方網站https://github.com/sjdirect/abot

36. Hawk

簡介

  • HAWK無需用戶做任何編程,提供圖形可視化數據獲取和清理工具,並以GPL協議開源。

特性

  • 無需編程,即可實現對Web內容的智能分析。
  • 所見即所得(WYSIWYG),可視化拉拽,支持對數據轉換和過濾等的快速處理。
  • 支持從多種數據庫和文件中導入和導出。
  • 任務可保存並可重用。
  • 尤其適用於爬取和數據清理,但其功能並不僅局限於此。

官方文檔https://github.com/ferventdesert/Hawk

官方網站https://ferventdesert.github.io/Hawk/

37. SkyScraper

簡介

  • 一種異步Web獲取和爬蟲,使用了async/await和響應式擴展。

官方文檔https://github.com/JonCanning/SkyScraper

官方網站https://github.com/JonCanning/SkyScraper

.NET編寫的Web爬蟲

38. DotnetSpider

簡介

  • DotnetSpider是一種使用.NET Standard實現的Web爬取軟件庫,類似於WebMagic和Scrapy。
  • 它是一種適用於.NET的輕量級、高效和高速的高層Web爬取和獲取框架。

官方文檔https://github.com/dotnetcore/DotnetSpider/wiki

官方網站https://github.com/dotnetcore/DotnetSpider

PHP編寫的開源Web爬蟲

39. Goutte

簡介

  • Goutte是一種PHP實現的屏幕抓取和Web爬取軟件庫。
  • Goutte為爬取Web站點和從HTML/XML響應中抽取數據提供了很好的API。

官方文檔https://goutte.readthedocs.io/en/latest/

官方網站https://github.com/FriendsOfPHP/Goutte

40. Dom-crawler

簡介

  • DomCrawler組件簡化了對HTML和XML文檔的DOM瀏覽。

官方文檔https://symfony.com/doc/current/components/dom_crawler.html

官方網站https://github.com/symfony/dom-crawler

41. Pspider

簡介

  • Pspider是最近完全使用PHP實現的一種並行爬取框架,它基於hightman/httpclient組件。

官方文檔https://github.com/hightman/pspider

官方網站https://github.com/hightman/pspider

42. Php-spider

簡介

  • 一種可配置、可擴展的Web爬蟲。

特性

  • 可限制爬取深度、隊列大小和最大下載數。
  • 支持基於XPath、CSS選擇器或普通(Plain old)PHP添加自定義的URI發現邏輯。
  • 提供了一系列有用的URI過濾器,例如域限制等。
  • 收集爬取統計信息,用於形成報告。

官方文檔https://github.com/mvdbos/php-spider

官方網站https://github.com/mvdbos/php-spider

43. Spatie / Crawler

簡介

  • 該軟件包提供了從Web站點爬取鏈接的類。在實現的底層機制上,使用了GuzzleHttp/Promise並發爬取多個URL。
  • 該爬蟲支持執行JavaScript,可以爬取使用JavaScript渲染的站點。從實現的底層機制看,該特性使用了Chrome和Puppeteer。

官方文檔https://github.com/spatie/crawler

官方網站https://github.com/spatie/crawler

Ruby實現的開源Web爬蟲

44. Mechanize

簡介

  • Mechanize軟件庫用於實現於Web站點的自動交互。
  • Mechanize自動按重定向存儲並發送Cookie。可以根據鏈接提交表單,支持填寫和提交表單域。
  • Mechanize也可跟蹤用戶訪問過站點的歷史記錄。

官方文檔http://docs.seattlerb.org/mechanize/

官方網站https://github.com/sparklemotion/mechanize

GO編寫的開源Web爬蟲

45. Colly

簡介

  • 為Go愛好者提供了一種快速且適用的爬取框架。
  • Colly提供了非常清晰的接口,可用於編寫任何類型的爬蟲和數據獲取工具。
  • Colly使得用戶可以輕易地從站點抽取結構化數據。這些數據適用於大范圍的應用,例如數據挖掘、數據處理和歸檔。

特性

  • 清晰的API。
  • 高速(支持單核每秒處理一千次以上的請求)。
  • 按域管理請求延遲和最大並發。
  • 自動Cookie和會話管理。
  • 同步/異步/並行爬取。
  • 支持緩存。
  • 對非unicode響應的自動編碼。
  • 支持robots.txt禁止規則。
  • 分布式爬取。
  • 可通過環境變量配置。
  • 支持擴展。

官方文檔http://go-colly.org/docs/

官方網站http://go-colly.org/

46. Gopa

特性

  • 輕量級,低資源占用,小於100MB的內存需求。
  • 易於部署,無需任何運行時和依賴關系。
  • 易於使用,不需要用戶具有任何編程和腳本技能,提供開箱即可用特性。

官方文檔https://github.com/infinitbyte/gopa

官方網站https://github.com/infinitbyte/gopa

47. Pholcus

簡介

  • Pholcus是一種完全使用Go語言實現的高並發性、重量級爬蟲軟件。
  • 它針對因特網數據采集,為只具有基本Go或JavaScript編程基礎的用戶提供了一種只需要關注自定義功能的特性。
  • 規則簡單靈活,並發批處理任務,提供豐富的輸出方式,包括MySQL、MongoDB、Kafka、CSV、Exvel等。
  • 用戶共享了大量的演示。此外,Pholcus支持兩種水平和垂直爬取模式,支持模擬登陸、暫停任務、取消任務等一系列高級特性。

特性

  • 一種強大的爬取工具。
  • 支持三種運行模式:單機、服務器和客戶。
  • 提供三種操作接口:Web、GUI和命令行。

官方文檔https://pholcus.gitbooks.io/docs/

官方網站https://github.com/henrylee2cn/pholcus

R編寫的開源Web爬蟲

48. Rvest

簡介

  • Rvest為用戶從Web頁面抽取信息提供幫助。它在設計上使用了magrittr軟件包,易於表達通用Web抽取。

官方文檔https://cran.r-project.org/web/packages/rvest/rvest.pdf

官方網站https://github.com/hadley/rvest

Scala編寫的開源Web爬蟲

49. Sparkler

簡介

  • Web爬蟲是一種機器人程序,它從Web網站采集資源,用於構建搜索引擎、知識庫等應用。
  • Sparkler(“Spark-Crawler”的縮寫)是一種新型的Web爬蟲,它通過整合Spark、Kafka、Lucene/Solr、Tika、pf4j等多種Apache項目,使用了分布式計算和信息檢索領域的最新進展。

特性

  • 提供更高的性能,具有更好的容錯。
  • 支持復雜和近實時分析。
  • 實時輸出數據流。
  • 可擴展的插件框架。
  • 通用解析器。

官方文檔http://irds.usc.edu/sparkler/dev/development-environment-setup.html#contributing-source

官方網站http://irds.usc.edu/sparkler/

Perl編寫的開源Web爬蟲

50. Web-scraper

簡介

  • Web Scraper是一種使用HTML、CSS選擇器或XPath表達式的Web采集工具集。

官方文檔https://github.com/miyagawa/web-scraper

官方網站https://github.com/miyagawa/web-scraper

總結

開源Web爬取應用紛繁多樣,在此難以一一枚舉。每種爬取應用分別各具特長,適用於不同用戶的需求。

用戶可根據自己的需求和技術要求選取適用的工具。也許用戶會從上述工具中做出選擇,也許會選擇本文列表之外的工具。在實踐中,用戶只需根據任務的不同做出一個合理的選擇,這完全取決於最終用戶。其中至關重要的是,用戶必須要了解每種工具的獨特優勢,並利用這些優勢服務於用戶自身的業務,或是自身所承擔的其它任何任務。

歡迎與我們就此開展交流!

查看英文原文: 50 Best Open Source Web Crawlers


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM