網(wǎng)絡(luò)爬蟲是一種自動(dòng)化程序或腳本,根據(jù)設(shè)定的數(shù)據(jù)爬取索引系統(tǒng)地爬取 Web 網(wǎng)頁(yè)。整個(gè)過程稱為 Web 數(shù)據(jù)采集(Crawling)或爬?。⊿pidering)。
人們通常將用于爬取的工具稱為爬蟲(Web Spider)、Web 數(shù)據(jù)抽取軟件或 Web 網(wǎng)站采集工具。
為更好地采用各種爬取應(yīng)用,我們需要做好調(diào)研,了解各種應(yīng)用的不同功能和相同特性。我們將在本文中介紹多種不同的開源 Web 爬取軟件庫(kù)和工具。本文有助于讀者實(shí)現(xiàn)爬取、采集網(wǎng)站數(shù)據(jù)并分析數(shù)據(jù)。
我們?nèi)娴乜偨Y(jié)了一些最好的開源 Web 爬取軟件庫(kù)和工具,并按實(shí)現(xiàn)語(yǔ)言的不同進(jìn)行了分類。
Python 編寫的開源 Web 爬蟲
1. Scrapy
實(shí)現(xiàn)語(yǔ)言:Python
GitHub 星標(biāo)數(shù):28660
官方支持鏈接:https://scrapy.org/community/
簡(jiǎn)介
Scrapy 是一種高速的高層 Web 爬取和 Web 采集框架,可用于爬取網(wǎng)站頁(yè)面,并從頁(yè)面中抽取結(jié)構(gòu)化數(shù)據(jù)。
Scrapy 的用途廣泛,適用于從數(shù)據(jù)挖掘、監(jiān)控到自動(dòng)化測(cè)試。
Scrapy 設(shè)計(jì)上考慮了從網(wǎng)站抽取特定的信息,它支持使用 CSS 選擇器和 XPath 表達(dá)式,使開發(fā)人員可以聚焦于實(shí)現(xiàn)數(shù)據(jù)抽取。
對(duì)于熟悉 Python 的開發(fā)人員,只需幾分鐘就能建立并運(yùn)行 Scrapy。
支持運(yùn)行在 Linux、Mac OS 和 Windows 系統(tǒng)上。
特性
內(nèi)置支持從 HTML 和 XML 抽取數(shù)據(jù)、使用擴(kuò)展的 CSS 選擇器(Selector)和 XPath 表達(dá)式等特性。
支持以多種格式(JSON、CSV、XML)生成輸出。
基于 Twisted 構(gòu)建。
穩(wěn)健的支持,自動(dòng)檢測(cè)編碼方式。
快速,功能強(qiáng)大。
官方文檔:https://docs.scrapy.org/en/latest/
官方網(wǎng)站:https://scrapy.org/
2. Cola
實(shí)現(xiàn)語(yǔ)言:Python
GitHub 星標(biāo)數(shù):1274
官方支持鏈接:https://scrapy.org/community/
簡(jiǎn)介
Cola 是一種高層分布式爬取框架,實(shí)現(xiàn)從網(wǎng)站爬取網(wǎng)頁(yè),并從中抽取結(jié)構(gòu)化數(shù)據(jù)。
它提供了一種實(shí)現(xiàn)目標(biāo)數(shù)據(jù)獲取的簡(jiǎn)單且靈活的方式。
用戶只需要編寫其中一部分代碼,就可在本地和分布式環(huán)境下運(yùn)行。
特性
高層分布式爬取框架。
簡(jiǎn)單且高速。
靈活。
官方文檔:https://github.com/chineking/cola
官方網(wǎng)站:https://pypi.org/project/Cola/
3. Crawley
實(shí)現(xiàn)語(yǔ)言 Python
GitHub 星標(biāo)數(shù): 144
官方支持鏈接:https://scrapy.org/community/
簡(jiǎn)介
Crawley 是一種 Python 爬取和采集框架,意在簡(jiǎn)化開發(fā)人員從 Web 網(wǎng)頁(yè)抽取數(shù)據(jù)到數(shù)據(jù)庫(kù)等結(jié)構(gòu)化存儲(chǔ)中。
特性
基于 Eventlet 構(gòu)建的高速 Web 爬蟲。
支持 MySQL、PostgreSQL、Oracle、Sqlite 等關(guān)系數(shù)據(jù)庫(kù)引擎。
支持 MongoDB、CouchDB 等 NoSQL 數(shù)據(jù)庫(kù)(最新特性?。?。
支持導(dǎo)出數(shù)據(jù)為 JSON、XML 和 CSV 格式(最新特性?。?。
命令行工具。
支持開發(fā)人員使用自己喜好的工具,例如 XPath 或 Pyquery(一種類似于 JQuery 的 Python 軟件庫(kù))等。
支持 Cookie 處理器(Handler)。
官方文檔:https://pythonhosted.org/crawley/
官方網(wǎng)站:http://project.crawley-cloud.com/
4. MechanicalSoup
實(shí)現(xiàn)語(yǔ)言: Python
GitHub 星標(biāo)數(shù): 2803
官方支持鏈接:https://scrapy.org/community/
簡(jiǎn)介
MechanicalSoup 是一種設(shè)計(jì)模擬人類使用 Web 瀏覽器行為的 Python 軟件庫(kù),它基于解析軟件庫(kù) BeautifulSoup 構(gòu)建。
如果開發(fā)人員需要從單個(gè)站點(diǎn)采集數(shù)據(jù),或是不需要大量數(shù)據(jù)采集,那么使用 MechanicalSoup 是一種簡(jiǎn)單高效的方法。
MechanicalSoup 自動(dòng)存儲(chǔ)和發(fā)送 Cookie、跟蹤重定向、支持鏈接跟隨和提交表單。
特性
輕量級(jí)。
支持 Cookie 處理器。
官方文檔: https://mechanicalsoup.readthedocs.io/en/stable/
官方網(wǎng)站:https://mechanicalsoup.readthedocs.io/
5. PySpider
實(shí)現(xiàn)語(yǔ)言: Python
GitHub 星標(biāo)數(shù): 11803
官方支持鏈接:https://scrapy.org/community/
簡(jiǎn)介
PySpider 是一種 Python 編寫的強(qiáng)大 Web 爬蟲。
它支持 JavaScript 網(wǎng)頁(yè),并具有分布式架構(gòu)。
PySpider 支持將爬取數(shù)據(jù)存儲(chǔ)在用戶選定的后臺(tái)數(shù)據(jù)庫(kù),包括 MySQL, MongoDB, Redis, SQLite, Elasticsearch 等。
支持開發(fā)人員使用 RabbitMQ、Beanstalk 和 Redis 等作為消息隊(duì)列。
特性
支持對(duì)重度 Ajax 網(wǎng)站的爬取。
易于實(shí)現(xiàn)適用、快速的爬取。
官方文檔: http://docs.pyspider.org/
官方網(wǎng)站:https://github.com/binux/pyspider
6. Portia
實(shí)現(xiàn)語(yǔ)言: Python
GitHub 星標(biāo)數(shù): 6250
官方支持鏈接:https://scrapy.org/community/
簡(jiǎn)介
Portia 是由 Scrapinghub 創(chuàng)建的一種可視化爬取工具,它不需要用戶具有任何程序開發(fā)知識(shí)。
如果用戶并非開發(fā)人員,最好直接使用 Portia 實(shí)現(xiàn) Web 爬取需求。
用戶無需任何安裝就可免費(fèi)試用 Portia,只需要在 Scrapinghub 注冊(cè)一個(gè)賬戶,就可使用托管版本。
即便用戶沒有編程技能,在 Portia 中創(chuàng)建爬蟲并抽取 Web 內(nèi)容也是非常易于實(shí)現(xiàn)的。
用戶無需安裝任何程序,因?yàn)?Portia 是運(yùn)行在 Web 頁(yè)面上的。
一旦檢測(cè)到需要爬取的頁(yè)面,Portia 會(huì)形成一個(gè)用戶已創(chuàng)建結(jié)構(gòu)的實(shí)例。
特性
Portia 可以很好地爬取基于 Ajax 構(gòu)建的網(wǎng)站(基于 Splash),也適用于爬取 Backbone、Angular 和 Ember 等重度 JavsScript 框架。
官方文檔:https://portia.readthedocs.io/en/latest/index.html
官方網(wǎng)站: https://github.com/scrapinghub/portia
7. Beautifulsoup
實(shí)現(xiàn)語(yǔ)言: Python
官方支持鏈接:https://scrapy.org/community/
簡(jiǎn)介
Beautiful Soup 一種設(shè)計(jì)用于實(shí)現(xiàn) Web 爬取等快速數(shù)據(jù)獲取項(xiàng)目的 Python 軟件庫(kù)。
它在設(shè)計(jì)上處于 HTML 或 XML 解析器之上,提供用于迭代、搜索和修改解析樹等功能的 Python 操作原語(yǔ)。往往能為開發(fā)人員節(jié)省數(shù)小時(shí)乃至數(shù)天的工作。
特性
Beautiful Soup 自動(dòng)將輸入文檔轉(zhuǎn)換為 Unicode 編碼,并將輸出文檔轉(zhuǎn)換為 UTF-8 編碼。
Beautiful Soup 處于一些廣為采用的 Python 解析器(例如,lxml 和 html5lib)之上,支持用戶嘗試使用多種不同的解析策略,并在速度和靈活性上做出權(quán)衡。
官方文檔:https://www.crummy.com/software/BeautifulSoup/bs4/doc/
官方網(wǎng)站: https://www.crummy.com/software/BeautifulSoup/
8. Spidy 爬蟲
實(shí)現(xiàn)語(yǔ)言: Python
GitHub 星標(biāo)數(shù): 152
官方支持鏈接:https://scrapy.org/community/
簡(jiǎn)介
Spidy 是一種從命令行運(yùn)行的 Web 爬蟲。易于使用。用戶只需提供 Web 網(wǎng)頁(yè)的 URL 鏈接,Spidy 就可以開始爬取!Spidy 無疑是一種整體爬取 Web 的簡(jiǎn)單有效的方式。
Spidy 使用 Python 請(qǐng)求查詢 Web 頁(yè)面,并使用 lxml 抽取頁(yè)面中的所有鏈接。非常簡(jiǎn)單!
特性
錯(cuò)誤處理。
跨平臺(tái)兼容性。
頻繁時(shí)間戳日志。
可移植性。
用戶友好的日志。
保存 Web 頁(yè)面。
支持文件壓縮。
官方文檔:https://github.com/rivermont/spidy
官方網(wǎng)站: http://project.crawley-cloud.com/
9. Garb
實(shí)現(xiàn)語(yǔ)言: Python
GitHub 星標(biāo)數(shù): 1627
官方支持鏈接:https://scrapy.org/community/
簡(jiǎn)介
Grab 是一種用于構(gòu)建爬蟲的 Python 框架。
使用 Grab 可構(gòu)建出各種復(fù)雜度的 Web 爬蟲,從只有五行代碼的腳本,到可處理百萬量級(jí) Web 頁(yè)面的復(fù)雜異步爬蟲。
Grab 提供了執(zhí)行網(wǎng)絡(luò)請(qǐng)求、處理接收內(nèi)容的 API。例如,實(shí)現(xiàn)與 HTML 文檔的 DOM 樹進(jìn)行交互。
特性
支持 HTTP 和 SOCKS 代理,可使用也可不使用認(rèn)證。
自動(dòng)字符集檢測(cè)。
強(qiáng)大的 API,支持使用 XPath 查詢從 HTML 文檔的 DOM 樹中抽取數(shù)據(jù)。
自動(dòng) Cookie(或會(huì)話)支持。
官方文檔:https://grablib.org/en/latest/
官方網(wǎng)站: https://github.com/lorien/grab
Java 編寫的開源 Web 爬蟲
10. Apache Nutch
實(shí)現(xiàn)語(yǔ)言: Java
GitHub 星標(biāo)數(shù): 1743
官方支持鏈接:https://wiki.apache.org/nutch/HelpContents
簡(jiǎn)介
Apache Nutch 是一種高度可擴(kuò)展、可伸縮的開源 Web 爬蟲軟件項(xiàng)目。
如果要列出最好的開源 Web 爬蟲列表,Apache Nutch 無疑金榜題名。
作為一種用于數(shù)據(jù)挖掘的高度可擴(kuò)展、可伸縮的開源代碼 Web 數(shù)據(jù)抽取軟件項(xiàng)目,Apache Nutch 得到了廣泛的使用。
Nutch 支持單機(jī)運(yùn)行,但是在 Hadoop 集群上運(yùn)行可最大化地發(fā)揮其強(qiáng)大能力。
全球范圍內(nèi)很多數(shù)據(jù)分析人員和科研人員、應(yīng)用開發(fā)人員和 Web 文本挖掘工程師都在使用 Apache Nutch。
Apache Nutch 是一種 Java 編寫的跨平臺(tái)解決方案。
特性:
默認(rèn)情況下,爬取數(shù)據(jù)和分析數(shù)據(jù)是獨(dú)立的過程。廣泛支持多種文檔格式,包括純文本、HTML/XHTML XML、XML、PDF、ZIP 等。使用 XPath 和命名空間實(shí)現(xiàn)映射。通過 Hadoop 支持分布式文件系統(tǒng)。鏈接圖形式的數(shù)據(jù)庫(kù)。支持 NTLM 認(rèn)證。
官方文檔: https://wiki.apache.org/nutch/
官方網(wǎng)站: http://nutch.apache.org/
11. Heritrix
實(shí)現(xiàn)語(yǔ)言: JavaGitHub
星標(biāo)數(shù): 1236
官方支持鏈接:https://github.com/internetarchive/heritrix3/issues
簡(jiǎn)介:
在使用 Java 編寫的免費(fèi)開源 Web 爬蟲中,Heritrix 是其中一種得到廣泛使用的工具。事實(shí)上,它是一種可擴(kuò)展、Web 規(guī)模、存檔質(zhì)量(archival-quality)的 Web 爬取項(xiàng)目。Heritrix 是一種擴(kuò)展能力和性能很好的解決方案,支持用戶即刻爬取并歸檔一組網(wǎng)站。此外,它在設(shè)計(jì)上考慮了 robots.txt 禁止規(guī)則和 META 機(jī)器人標(biāo)簽。Heritrix 可運(yùn)行在 Linux/Unix 和 Windows 系統(tǒng)上。
特性:
HTTP 認(rèn)證。NTLM 認(rèn)證。鏈接抽取中的 XSL 轉(zhuǎn)換。獨(dú)立于搜索引擎。是一種成熟并穩(wěn)定的平臺(tái)。高度可配置。支持在任一機(jī)器上運(yùn)行。
官方文檔: https://github.com/internetarchive/heritrix3/wiki/Heritrix 3.0 and 3.1 User Guide
官方網(wǎng)站: https://github.com/internetarchive/heritrix3b
12. ACHE 爬蟲
實(shí)現(xiàn)語(yǔ)言: JavaGitHub
星標(biāo)數(shù): 154
官方支持鏈接:https://gitter.im/ViDA-NYU/ache
簡(jiǎn)介:
ACHE 是一種專用于特定用途的 Web 爬蟲。ACHE 爬取滿足特定標(biāo)準(zhǔn)的 Web 頁(yè)面。例如,屬于特定領(lǐng)域并包含用戶指定模式的頁(yè)面。不同于通用爬蟲,ACHE 使用頁(yè)面分類器遴選特定領(lǐng)域中的相關(guān)和無關(guān)頁(yè)面。頁(yè)面分類器可以是基本的正則表達(dá)式(例如,匹配所有包含給定單詞的頁(yè)面),也可以基于機(jī)器學(xué)習(xí)的分類模型。ACHE 也可以自動(dòng)學(xué)習(xí)如何對(duì)鏈接做優(yōu)先處理,實(shí)現(xiàn)高效地定位相關(guān)內(nèi)容,避免檢索無關(guān)的頁(yè)面內(nèi)容。
特性:
對(duì)固定網(wǎng)站列表的正常爬取。通過自動(dòng)鏈接優(yōu)先處理,發(fā)現(xiàn)并爬取新的相關(guān)網(wǎng)站??膳渲貌煌愋偷捻?yè)面分類器(例如,機(jī)器學(xué)習(xí)、正則表達(dá)式等)。持續(xù)重新爬取站點(diǎn),實(shí)現(xiàn)頁(yè)面更新的發(fā)現(xiàn)。使用 ElasticSearch 對(duì)爬取頁(yè)面做索引。實(shí)時(shí)搜索爬取頁(yè)面的 Web 接口。用于監(jiān)控爬蟲的 REST API 和基于 Web 的用戶接口。使用 TOR 代理爬取隱含服務(wù)。
官方文檔: http://ache.readthedocs.io/en/latest/
官方網(wǎng)站: https://github.com/ViDA-NYU/ache
13. Crawler4j
實(shí)現(xiàn)語(yǔ)言: JavaGitHub
星標(biāo)數(shù): 3039
官方支持鏈接:https://github.com/yasserg/crawler4j/issues
簡(jiǎn)介:
crawler4j 是一種 Java 編寫的開源 Web 爬蟲,提供了爬取 Web 網(wǎng)站的基本接口。開發(fā)人員可以使用 crawler4j 在數(shù)分鐘內(nèi)建立一個(gè)多線程 Web 爬蟲。
官方文檔: https://github.com/yasserg/crawler4j
官方網(wǎng)站: https://github.com/yasserg/crawler4j
14. Gecco
實(shí)現(xiàn)語(yǔ)言: JavaGitHub
星標(biāo)數(shù): 1245
官方支持鏈接:https://github.com/xtuhcy/gecco/issues
簡(jiǎn)介:
Gecco 是一種使用 Java 開發(fā)的輕量級(jí) Web 爬蟲,易于使用。Gecco 集成了 jsoup、httpclient、fastjson、spring、htmlunit、redission 等優(yōu)秀框架。用戶只需要配置一系列 jQuery 風(fēng)格選擇器,就能很快地建立一個(gè)爬蟲。Gecco 框架具有優(yōu)秀的擴(kuò)展能力??蚣芑谝恍╅_放式和封閉式設(shè)計(jì)原則,對(duì)改進(jìn)封閉,對(duì)擴(kuò)展開放。
特性:
易于使用,使用 jQuery 風(fēng)格選擇器抽取元素。支持頁(yè)面中的異步 Ajax 請(qǐng)求。支持頁(yè)面 JavaScript 變量抽取。使用 Redis 實(shí)現(xiàn)分布式爬?。▍⒁?gecco-redis 文檔)。支持使用 Spring 開發(fā)業(yè)務(wù)邏輯(參見 gecco-spring 文檔)。支持 htmlunit 擴(kuò)展(參見 gecco-htmlunit 文檔)。支持多種擴(kuò)展機(jī)制。支持下載 UserAgent 的隨機(jī)選擇。支持下載代理服務(wù)器的隨機(jī)選取。
官方文檔: https://github.com/xtuhcy/gecco
官方網(wǎng)站: https://github.com/xtuhcy/gecco
15. BUbiNG
實(shí)現(xiàn)語(yǔ)言: JavaGitHub
星標(biāo)數(shù):24
官方支持鏈接:https://github.com/LAW-Unimi/BUbiNG/issues
簡(jiǎn)介:
BUbiNG 令人驚喜,它可稱為下一代的開源 Web 爬蟲。BUbiNG 是一種 Java 開發(fā)的完全分布式爬蟲(無需中央?yún)f(xié)調(diào)),每秒可爬取數(shù)千個(gè)網(wǎng)頁(yè),并支持采集大規(guī)模數(shù)據(jù)集。BUbiNG 的分布式是基于高速協(xié)議實(shí)現(xiàn)的,因此可以獲得非常高的通量。BUbiNG 提供對(duì)海量數(shù)據(jù)的大規(guī)模爬取。它完全可配置、易于擴(kuò)展,并可集成垃圾信息檢測(cè)。
特性:
高度并行。完全分布式。使用 JAI4J。JAI4J 是一種基于 JGroups 實(shí)現(xiàn)的瘦功能層,實(shí)現(xiàn)任務(wù)指派。(當(dāng)前)使用剝離網(wǎng)頁(yè)的指紋,檢測(cè)近似的重復(fù)內(nèi)容。快速。大規(guī)模爬取。
官方文檔: http://law.di.unimi.it/software/bubing-docs/index.html
官方網(wǎng)站: http://law.di.unimi.it/software.php#bubing
16. Narconex
實(shí)現(xiàn)語(yǔ)言:Java
官方支持鏈接:https://github.com/norconex/collector-http/issues
簡(jiǎn)介:
對(duì)于尋求可滿足企業(yè)級(jí)需求的開源 Web 爬蟲的用戶而言,Narconex 是一種很好的工具。Norconex 支持用戶爬取任何 Web 內(nèi)容。用戶可以獨(dú)立運(yùn)行這種全功能數(shù)據(jù)采集器,或是將其集成在自己的應(yīng)用中。支持所有操作系統(tǒng)。可在具有一般容量的單體服務(wù)器上爬取數(shù)百萬信息。此外,Narconex 提供多種內(nèi)容和元數(shù)據(jù)操作特性,還可以抽取頁(yè)面中特定的圖像。
特性:
多線程。支持按各種計(jì)劃任務(wù),抽取不同時(shí)間段的數(shù)據(jù)。從 HTML、Word、PDF 等多種文件格式中抽取文本內(nèi)容。抽取文檔相關(guān)的元數(shù)據(jù)。支持抽取使用用 JavaScript 渲染的頁(yè)面。檢測(cè)語(yǔ)言。支持翻譯??膳渲门廊∷俣???蓹z測(cè)發(fā)生修改或已被刪除的文檔。支持使用外部命令分析或操作文檔。
官方文檔: http://www.norconex.com/collectors/collector-http/getting-started
官方網(wǎng)站: http://www.norconex.com/collectors/collector-http/
17. WebSPHINX
實(shí)現(xiàn)語(yǔ)言: Java
當(dāng)前尚不提供官方支持。
簡(jiǎn)介:
WebSphinix 是一種非常易于使用的可定制 Web 爬蟲。它設(shè)計(jì)用于高級(jí) Web 用戶和 Java 編程人員,支持他們自動(dòng)爬取小部分 Web。WebSphinix 數(shù)據(jù)抽取解決方案也提供了一種全面的 Java 類庫(kù)和交互式軟件開發(fā)環(huán)境。WebSphinix 包括兩部分:爬蟲基準(zhǔn)測(cè)試(Crawler Workbench),WebSPHINX 類庫(kù)。爬蟲基準(zhǔn)測(cè)試提供了很好的用戶圖形接口,支持用戶配置并控制定制的 Web 爬蟲。WebSPHINX 類庫(kù)為使用 Java 編寫 Web 爬蟲提供支持。WebSphinix 支持運(yùn)行在 Windows、Linux、Mac 和 Android IOS 上。
特性:
以圖的方式可視化 Web 頁(yè)面采集。將多個(gè)頁(yè)面組合為單個(gè)文檔,以供查看和打印。支持抽取所有滿足設(shè)定模式的文本。支持 HTML 解析。支持 robot.txt 禁止標(biāo)準(zhǔn)。通用 HTML 轉(zhuǎn)換。多線程 Web 頁(yè)面檢索。
官方文檔: https://www.cs.cmu.edu/~rcm/websphinx/doc/index.html
官方網(wǎng)站: https://www.cs.cmu.edu/~rcm/websphinx/#about
18. Spiderman
實(shí)現(xiàn)語(yǔ)言: JavaGitHub
星標(biāo)數(shù): 2400
官方支持鏈接:https://gitee.com/l-weiwei/spiderman/issues
簡(jiǎn)介:
Spiderman 是一種 Java 開源 Web 數(shù)據(jù)抽取工具。它采集特定的 Web 頁(yè)面,并從中抽取有用數(shù)據(jù)。Spiderman 主要使用 XPath 和正則表達(dá)式等技術(shù)抽取實(shí)際數(shù)據(jù)。
特性:
更高的性能。持久化集合狀態(tài)。分布式。支持 JavaScript。
官方文檔: https://gitee.com/l-weiwei/spiderman
官方網(wǎng)站: https://gitee.com/l-weiwei/spiderman
19. WebCollector :
實(shí)現(xiàn)語(yǔ)言: JavaGitHub
星標(biāo)數(shù): 1986
官方支持鏈接:https://github.com/CrawlScript/WebCollector/issues
簡(jiǎn)介:
WebCollector 是一種基于 Java 的開源 Web 爬蟲框架。它為實(shí)現(xiàn) Web 爬取功能提供了一下基本的接口。用戶可以使用它在五分鐘內(nèi)建立起一個(gè)多線程爬蟲。
特性:
快速。
官方文檔: https://github.com/CrawlScript/WebCollector
官方網(wǎng)站: https://github.com/CrawlScript/WebCollector
20. Webmagic
實(shí)現(xiàn)語(yǔ)言: JavaGitHub
星標(biāo)數(shù): 6891
官方支持鏈接:https://groups.google.com/forum/#!forum/webmagic-java
簡(jiǎn)介:
WebMagic 是一種可擴(kuò)展的爬蟲框架。WebMagic 涵蓋了爬蟲的整個(gè)生命周期,包括下載、URL 管理、內(nèi)容抽取和持久化??捎糜诤?jiǎn)化一些特定爬蟲的開發(fā)。
特性:
高度靈活的簡(jiǎn)單內(nèi)核。提供實(shí)現(xiàn) HTML 抽取的簡(jiǎn)單 API。使用 POJO 標(biāo)注定制爬蟲,無需配置。支持多線程和分布式。易于集成。
官方文檔: http://webmagic.io/docs/en/
官方網(wǎng)站: https://github.com/code4craft/webmagic
21. StormCrawler
實(shí)現(xiàn)語(yǔ)言: JavaGitHub
星標(biāo)數(shù):437
官方支持鏈接:https://stackoverflow.com/questions/tagged/stormcrawler
簡(jiǎn)介:
StormCrawler 是一種基于 Apache Storm 構(gòu)架分布式 Web 爬蟲的開源 SDK。StormCrawler 為開發(fā)人員構(gòu)建爬蟲提供了軟件庫(kù)和一系列資源。StormCrawler 完全適用于以數(shù)據(jù)流提供需獲取和解析的 URL 的情況,也非常適用于大規(guī)模遞歸性爬取,尤其是需要低延遲的情況。
特性:
可擴(kuò)展。有彈性。低延遲。易于擴(kuò)展。運(yùn)行良好且高效。
官方文檔: http://stormcrawler.net/docs/api/
官方網(wǎng)站: http://stormcrawler.net/
JavaScript 編寫的開源 Web 爬蟲
22. NodeCrawler
實(shí)現(xiàn)語(yǔ)言: JavaScriptGitHub
星標(biāo)數(shù): 3999
官方支持鏈接:https://gitter.im/node-crawler/discuss?utm_source=badge
簡(jiǎn)介:
NodeCrawler 是一種廣為使用的 Web 爬蟲,它基于 NodeJS 實(shí)現(xiàn),具有非常快的爬取速度。Nodecrawler 非常適用于偏愛使用 JavaScript 編程或者致力于 JavaScript 項(xiàng)目的開發(fā)人員。其安裝也非常簡(jiǎn)單。JSDOM 和 Cheerio(用于 HTML 解析)實(shí)現(xiàn)服務(wù)器端渲染。其中,JSDOM 更為穩(wěn)定。
特性:
使用 Cheerio(默認(rèn))或 JSDOM 實(shí)現(xiàn)服務(wù)端 DOM 和自動(dòng) jQuery 插入??膳渲贸刈右?guī)模和重試次數(shù)??刂婆廊÷氏拗?。請(qǐng)求的優(yōu)先隊(duì)列。支持 forceUTF8 模式,使得爬蟲可以檢測(cè)并轉(zhuǎn)換字符集。與 4.x 乃至更新版本兼容。
官方文檔:https://github.com/bda-research/node-crawler
官方網(wǎng)站:http://nodecrawler.org/
23. Simplecrawler
實(shí)現(xiàn)語(yǔ)言: JavaScriptGitHub
星標(biāo)數(shù):1764
官方支持鏈接:https://github.com/simplecrawler/simplecrawler/issues
簡(jiǎn)介:
Simplecrawler 設(shè)計(jì)提供基本的、靈活且穩(wěn)定的網(wǎng)站爬取 API。Simplecrawler 在實(shí)現(xiàn)上考慮了針對(duì)特大型 Web 站點(diǎn)的歸檔、分析和搜索。它可爬取上百萬頁(yè)面,并毫無問題地向磁盤寫入數(shù)十 GB 數(shù)據(jù)。
特性:
提供了用于自動(dòng)檢測(cè)鏈接資源的一些簡(jiǎn)單邏輯,用戶可自行替換和添加。自動(dòng)請(qǐng)求任何 robots.txt 禁止規(guī)則。具有靈活的隊(duì)列系統(tǒng),可在磁盤上凍結(jié)和解凍。
官方文檔: https://github.com/simplecrawler/simplecrawler
官方網(wǎng)站: https://www.npmjs.com/package/simplecrawler
24. Js-crawler :
實(shí)現(xiàn)語(yǔ)言: JavaScriptGitHub
星標(biāo)數(shù): 167
官方支持鏈接:https://github.com/antivanov/js-crawler/issues
簡(jiǎn)介:
使用 NodeJS 實(shí)現(xiàn)的 Web 爬蟲,支持 HTTP 和 HTTPS
官方文檔: https://github.com/antivanov/js-crawler
官方網(wǎng)站: https://github.com/antivanov/js-crawler
25. Webster
實(shí)現(xiàn)語(yǔ)言: JavaScriptGitHub
星標(biāo)數(shù): 201
官方支持鏈接:https://github.com/zhuyingda/webster/issues
簡(jiǎn)介:
Webster 是一種使用 NodeJS 編寫的可靠 Web 爬取和采集框架,用于爬取 Web 站點(diǎn)并從頁(yè)面中抽取結(jié)構(gòu)化數(shù)據(jù)。與其他爬取框架的不同之處在于,Webster 可以抓取瀏覽器客戶端的 JavaScript 和 Ajax 請(qǐng)求呈現(xiàn)的內(nèi)容。
官方文檔: http://webster.zhuyingda.com/
官方網(wǎng)站: https://github.com/zhuyingda/webster
26. Node-osmosis
實(shí)現(xiàn)語(yǔ)言:JavaScriptGitHub
星標(biāo)數(shù): 3630
官方支持鏈接:https://github.com/rchipka/node-osmosis/issues
簡(jiǎn)介:
一種使用 NodeJS 實(shí)現(xiàn)的 HTML/XML 解析器和 Web 爬蟲。
特性:
使用原生 libxml 的 C 綁定。干凈的 Promise 類接口。支持 CSS 3.0 和 XPath 1.0 選擇器的混合。Sizzle 選擇器、Slick 選擇器以及更多。不具有像 jQuery、cheerio 或 jsdom 那樣的大型依賴。構(gòu)成深度和復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。
HTML 解析器特性:快速解析;高速搜索;內(nèi)存占用小。
HTML DOM 特性:加載和搜索 ajax 內(nèi)容;DOM 交互和事件;執(zhí)行嵌入和遠(yuǎn)程腳本;在 DOM 中執(zhí)行代碼。
HTTP 請(qǐng)求特性:日志記錄 URL,重定向和錯(cuò)誤;Cookie 的 jar 包,以及自定義 Cookie/ 頭部 / 用戶代理;登錄 / 表單提交、會(huì)話 Cookie,基本的認(rèn)證;單代理、多代理,處理代理失敗情況;限制重試和重定向。
官方文檔: https://rchipka.github.io/node-osmosis/global.html
官方網(wǎng)站: https://www.npmjs.com/package/osmosis
27. Supercrawler
實(shí)現(xiàn)語(yǔ)言:JavaScriptGitHub
星標(biāo)數(shù): 4341
官方支持鏈接:https://github.com/brendonboshell/supercrawler/issues
簡(jiǎn)介:
Supercrawler 是一種使用 NodeJS 實(shí)現(xiàn)的 Web 爬蟲,在設(shè)計(jì)上支持高度可配置和易用性。一旦成功爬取一個(gè)網(wǎng)頁(yè)(可以是圖像、文本文檔或其他任何文件),Supercrawler 將會(huì)觸發(fā)用戶自定義的內(nèi)容類型(content-type)處理器,處理頁(yè)面解析、保存數(shù)據(jù)以及其它一些用戶定義的功能。
特性:
鏈接檢測(cè):Supercrawler 會(huì)解析所爬取的 HTML 文檔,識(shí)別其中鏈接并添加到隊(duì)列中。
機(jī)器人解析:在爬取前 Supercrawler 會(huì)請(qǐng)求 robots.txt 并檢查其中的禁止規(guī)則。它也可識(shí)別站點(diǎn)地圖。
站點(diǎn)地圖解析:Supercrawler 可以從 XML 站點(diǎn)地圖文件中讀取鏈接,并將鏈接添加到隊(duì)列中。
并發(fā)限制:Supercrawler 可限制在任一時(shí)間發(fā)出的請(qǐng)求數(shù)。
速率限制:Supercrawler 可添加請(qǐng)求的時(shí)延,以免對(duì)服務(wù)器產(chǎn)生轟炸。
指數(shù)補(bǔ)償(Exponential backoff)重試:Supercrawler 將依此在一小時(shí)、兩小時(shí)、四小時(shí)乃至更多時(shí)間后重試請(qǐng)求。要使用該特性,爬取隊(duì)列必須使用數(shù)據(jù)庫(kù)或 Redis 作為后端。
主機(jī)名均衡:Supercrawler 可在不同主機(jī)名間平均分割請(qǐng)求量。要使用該特性,爬取隊(duì)列必須以 Redis 為后端。
官方文檔: https://github.com/brendonboshell/supercrawler
官方網(wǎng)站: https://github.com/brendonboshell/supercrawler
28. Web scraper 的 Chrome 擴(kuò)展
實(shí)現(xiàn)語(yǔ)言:JavaScriptGitHub
星標(biāo)數(shù): 775
官方支持鏈接:https://forum.webscraper.io/
簡(jiǎn)介:
Web Scraper 是一種 Chrome 瀏覽器擴(kuò)展,構(gòu)建用于從 Web 頁(yè)面抽取數(shù)據(jù)。用戶可以使用該擴(kuò)展創(chuàng)建計(jì)劃(站點(diǎn)地圖),定義如何遍歷一個(gè) Web 網(wǎng)站,以及如何從中抽取數(shù)據(jù)。Web Scraper 使用站點(diǎn)地圖相應(yīng)地遍歷網(wǎng)站,并從中抽取數(shù)據(jù)。支持以 CSV 格式導(dǎo)出所抽取的數(shù)據(jù)。
特性:
抽取多個(gè)頁(yè)面。
站點(diǎn)地圖和抽取的數(shù)據(jù)存儲(chǔ)在瀏覽器的本地存儲(chǔ),也可存儲(chǔ)在 CouchDB 中。
多種數(shù)據(jù)類型選取。
支持從動(dòng)態(tài)網(wǎng)頁(yè)(JavaScript AJAX)抽取數(shù)據(jù)。
瀏覽抽取的數(shù)據(jù)。
以 CSV 格式導(dǎo)出抽取的數(shù)據(jù)。
導(dǎo)入、導(dǎo)出站點(diǎn)地圖。
只依賴于 Chrome 瀏覽器。
官方文檔: https://www.webscraper.io/documentation
官方網(wǎng)站: https://www.webscraper.io
29. Headless Chrome 爬蟲
實(shí)現(xiàn)語(yǔ)言:JavaScriptGitHub
星標(biāo)數(shù): 3256
官方支持鏈接:https://github.com/yujiosaka/headless-chrome-crawler/issues
簡(jiǎn)介:
使用基本 HTML 文件請(qǐng)求的爬蟲,通常速度很快。但這樣的爬蟲往往會(huì)抽取到空白內(nèi)容,尤其是在爬取使用 AngularJS、React 和 Vue.js 等現(xiàn)代前端框架構(gòu)建的網(wǎng)站時(shí)。
特性:
分布式爬取。
可配置并發(fā)、延遲和重試。
支持深度優(yōu)先搜索和廣度優(yōu)先搜索算法。
支持插拔緩存存儲(chǔ),例如 Redis。
支持導(dǎo)出 CSV 和 JSON。
在達(dá)到最大請(qǐng)求時(shí)暫停爬取,并可在任一時(shí)刻恢復(fù)。
自動(dòng)插入用于抽取的 jQuery。
保存屏幕截圖,用于證實(shí)爬取過程。
模擬設(shè)備和用戶代理。
具有優(yōu)先隊(duì)列,可提高爬取效率。
官方文檔: https://github.com/yujiosaka/headless-chrome-crawler/blob/master/docs/API.md
官方網(wǎng)站: https://github.com/yujiosaka/headless-chrome-crawler
30. X-ray
實(shí)現(xiàn)語(yǔ)言:JavaScriptGitHub
星標(biāo)數(shù): 4464
官方支持鏈接:https://github.com/matthewmueller/x-ray/issues
特性:
模式靈活:支持字符串、數(shù)組、對(duì)象以及嵌套對(duì)象結(jié)構(gòu)。
模式并非綁定于所抽取的頁(yè)面結(jié)構(gòu),支持用戶獲取選定結(jié)構(gòu)中的數(shù)據(jù)。
可組合(Composable):API 是完全可組合的,賦予用戶抽取每個(gè)頁(yè)面的極大靈活性。
分頁(yè)支持:爬取頁(yè)面在 Web 站點(diǎn)上的所有分頁(yè)。
X-ray 還支持請(qǐng)求延遲和分頁(yè)限制,并支持將爬取頁(yè)面導(dǎo)入到單個(gè)文件中。這樣一旦單個(gè)頁(yè)面產(chǎn)生錯(cuò)誤,用戶不會(huì)失去所有已爬取的數(shù)據(jù)。
爬蟲支持:從一個(gè)頁(yè)面開始,輕易跳轉(zhuǎn)另一個(gè)頁(yè)面。頁(yè)面跳轉(zhuǎn)是可預(yù)測(cè)的,按深度優(yōu)先爬取所有頁(yè)面。
負(fù)責(zé)任的爬取:X-ray 支持并發(fā)、限制、延遲、超時(shí)和限制,實(shí)現(xiàn)負(fù)責(zé)任地爬取任何頁(yè)面。
可插拔驅(qū)動(dòng):可按用戶需求置換不同的爬蟲。
官方文檔: https://github.com/matthewmueller/x-ray
官方網(wǎng)站: https://www.npmjs.com/package/x-ray-scraper
C 編寫的開源 Web 爬蟲
31. Httrack
實(shí)現(xiàn)語(yǔ)言:CGitHub
星標(biāo)數(shù): 747
官方支持鏈接:http://forum.httrack.com/
簡(jiǎn)介:
HTTracks 是一項(xiàng)免費(fèi)(GPL、Libre/ 自由軟件)且易于使用的離線瀏覽器功能。支持用戶將 Web 站點(diǎn)下載到本地目錄,遞歸構(gòu)建全部目錄,以及獲取 HTML、圖像和其它文件到本地計(jì)算機(jī)。HTTrack 會(huì)維持原站點(diǎn)的相對(duì)鏈接結(jié)構(gòu)。用戶可以用瀏覽器打開本地的“鏡像”頁(yè)面,并逐個(gè)鏈接瀏覽,與在線瀏覽無異。HTTrack 也支持對(duì)已有鏡像站點(diǎn)的更新,以及從中斷點(diǎn)恢復(fù)下載。HTTrack 高度可配置,并提供幫助文檔。
特性:
多語(yǔ)言窗口,提供對(duì) Linux/UNIX 的接口。
鏡像單個(gè)站點(diǎn),或是一并鏡像多個(gè)站點(diǎn)。
支持按文件類型、鏈接位置、結(jié)構(gòu)深度、文件大小過濾,接受或拒絕站點(diǎn)或文件名。
支持代理,可最大化速度,并可選認(rèn)證。
官方文檔: http://www.httrack.com/html/index.html
官方網(wǎng)站: http://www.httrack.com/
32. GNU Wget
實(shí)現(xiàn)語(yǔ)言:CGitHub
星標(biāo)數(shù): 22
官方支持鏈接:https://github.com/chineking/cola/issues
簡(jiǎn)介:
GNU Wget 是一種免費(fèi)軟件包,它使用 HTTP、HTTPS、FTP、FTPS 等廣為使用的互聯(lián)網(wǎng)協(xié)議檢索文件。Wget 是一種非交互式命令行工具,易于從腳本、Cron 任務(wù)、不具有 X 窗口支持的終端等處調(diào)用。
特性:
使用 REST 和 RANGE 支持從中斷處恢復(fù)下載。
基于 NLS 的消息文件,可使用多種語(yǔ)言。
可運(yùn)行于大多數(shù)類 UNIX 操作系統(tǒng)上,也支持 Windows.支持 HTTP 代理。
支持 HTTP Cookie。
官方文檔: https://www.gnu.org/software/wget/manual/
官方網(wǎng)站: https://www.gnu.org/software/wget/
C 編寫的開源 Web 爬蟲
33. gigablast
實(shí)現(xiàn)語(yǔ)言:C GitHub
星標(biāo)數(shù): 912
官方支持鏈接:https://github.com/gigablast/open-source-search-engine/issues
簡(jiǎn)介:
Gigablast 是一種開源的 Web 和企業(yè)搜索引擎,也是一種爬蟲。Gigablast 是自身維護(hù)數(shù)十億頁(yè)面檢索索引的數(shù)家美國(guó)搜索引擎之一。
特性:
大規(guī)模。高性能。實(shí)時(shí)信息檢索技術(shù)。
官方文檔: http://www.gigablast.com/api.html
官方網(wǎng)站: http://www.gigablast.com/
C# 編寫的開源 Web 爬蟲
34. Arachnode.net
實(shí)現(xiàn)語(yǔ)言:C#GitHub
星標(biāo)數(shù): 9
官方支持鏈接:http://arachnode.net/forums/
簡(jiǎn)介:
Arachnode.net 適用于尋求開源 Web 爬蟲的 C# 開發(fā)人員。Arachnode.net 軟件類庫(kù)從因特網(wǎng)下載內(nèi)容、對(duì)內(nèi)容做索引,并對(duì)過程做定制。用戶可使用該工具做個(gè)人內(nèi)容聚合,也可用于將下載的內(nèi)容抽取、采集和解析為多個(gè)表單。Arachnode.net 索引所發(fā)現(xiàn)的內(nèi)容,并存儲(chǔ)在 Lucene.NET 索引中。Arachnode.net 非常適用于文本挖掘,也適用于學(xué)習(xí)高級(jí)爬取技術(shù)。
特性:
可配置規(guī)則和行為。
集成 Lucene.NET。
支持 SQL Server 和全文本索引。
支持對(duì).DOC/.PDF/.PPT/.XLS 等文件類型的索引。
支持將 HTML 轉(zhuǎn)化為 XML 和 XHTML。
支持全部 JavaScript/AJAX 功能。
支持多線程和節(jié)流 (Throttling)。
行為適當(dāng)(Respectful)的爬取。
分析服務(wù)。
官方文檔: https://documentation.arachnode.net/index.html
官方網(wǎng)站: http://arachnode.net/
35. Abot
實(shí)現(xiàn)語(yǔ)言:C#GitHub
星標(biāo)數(shù): 1392
官方支持鏈接:https://groups.google.com/forum/#!forum/abot-web-crawler
簡(jiǎn)介:
Abot 是一種 C# 實(shí)現(xiàn)的開源 Web 爬蟲,主要側(cè)重于速度和靈活性。Abot 在實(shí)現(xiàn)中考慮了底層技術(shù)細(xì)節(jié),包括多線程、HTTP 請(qǐng)求、調(diào)度、鏈接解析等。用戶只需注冊(cè)事件,就可以處理分頁(yè)數(shù)據(jù)。支持用戶插入自己的核心接口實(shí)現(xiàn),實(shí)現(xiàn)對(duì)整個(gè)爬取過程的完全控制。
特性:
高速!易于定制(可插拔架構(gòu),支持用戶定義爬取內(nèi)容和方式)。
經(jīng)過大量的單元測(cè)試(高代碼覆蓋率)。
非常輕量級(jí)(并非過度工程化)。
無過程之外的依賴,例如對(duì)數(shù)據(jù)庫(kù)、所安裝服務(wù)等的依賴。
官方文檔: https://github.com/sjdirect/abot
官方網(wǎng)站: https://github.com/sjdirect/abot
36. Hawk
實(shí)現(xiàn)語(yǔ)言:C#GitHub
星標(biāo)數(shù): 1875
官方支持鏈接:https://github.com/ferventdesert/Hawk/issues
簡(jiǎn)介:
HAWK 無需用戶做任何編程,提供圖形可視化數(shù)據(jù)獲取和清理工具,并以 GPL 協(xié)議開源。
特性:
無需編程,即可實(shí)現(xiàn)對(duì) Web 內(nèi)容的智能分析。
所見即所得(WYSIWYG),可視化拉拽,支持對(duì)數(shù)據(jù)轉(zhuǎn)換和過濾等的快速處理。
支持從多種數(shù)據(jù)庫(kù)和文件中導(dǎo)入和導(dǎo)出。
任務(wù)可保存并可重用。
尤其適用于爬取和數(shù)據(jù)清理,但其功能并不僅局限于此。
官方文檔: https://github.com/ferventdesert/Hawk
官方網(wǎng)站: https://ferventdesert.github.io/Hawk/
37. SkyScraper
實(shí)現(xiàn)語(yǔ)言:C#GitHub
星標(biāo)數(shù): 39
官方支持鏈接:https://github.com/JonCanning/SkyScraper/issues
簡(jiǎn)介:
一種異步 Web 獲取和爬蟲,使用了 async/await 和響應(yīng)式擴(kuò)展。
官方文檔: https://github.com/JonCanning/SkyScraper
官方網(wǎng)站: https://github.com/JonCanning/SkyScraper
.NET 編寫的 Web 爬蟲
38. DotnetSpider
實(shí)現(xiàn)語(yǔ)言:.NETGitHub
星標(biāo)數(shù): 1382
官方支持鏈接:https://github.com/dotnetcore/DotnetSpider/issues
簡(jiǎn)介:
DotnetSpider 是一種使用.NET Standard 實(shí)現(xiàn)的 Web 爬取軟件庫(kù),類似于 WebMagic 和 Scrapy。
它是一種適用于.NET 的輕量級(jí)、高效和高速的高層 Web 爬取和獲取框架。
官方文檔: https://github.com/dotnetcore/DotnetSpider/wiki
官方網(wǎng)站: https://github.com/dotnetcore/DotnetSpider
PHP 編寫的開源 Web 爬蟲
39. Goutte
實(shí)現(xiàn)語(yǔ)言:PHPGitHub
星標(biāo)數(shù): 6574
官方支持鏈接:https://github.com/FriendsOfPHP/Goutte/issues
簡(jiǎn)介:
Goutte 是一種 PHP 實(shí)現(xiàn)的屏幕抓取和 Web 爬取軟件庫(kù)。
Goutte 為爬取 Web 站點(diǎn)和從 HTML/XML 響應(yīng)中抽取數(shù)據(jù)提供了很好的 API。
官方文檔: https://goutte.readthedocs.io/en/latest/
官方網(wǎng)站: https://github.com/FriendsOfPHP/Goutte
40. Dom-crawler
實(shí)現(xiàn)語(yǔ)言:PHPGitHub
星標(biāo)數(shù): 1340
官方支持鏈接:https://github.com/symfony/symfony/issues
簡(jiǎn)介:
DomCrawler 組件簡(jiǎn)化了對(duì) HTML 和 XML 文檔的 DOM 瀏覽。
官方文檔: https://symfony.com/doc/current/components/dom_crawler.html
官方網(wǎng)站: https://github.com/symfony/dom-crawler
41. Pspider
{placeholder tag=span i=1122}實(shí)現(xiàn)語(yǔ)言:PHPGitHub
{placeholder tag=p i=503} {placeholder tag=span i=1123}星標(biāo)數(shù): 249 {placeholder tag=p i=504} {placeholder tag=span i=1124}官方支持鏈接:https://github.com/hightman/pspider/issues {placeholder tag=p i=505} {placeholder tag=span i=1125} 簡(jiǎn)介: {placeholder tag=p i=506} {placeholder tag=span i=1126}Pspider 是最近完全使用 PHP 實(shí)現(xiàn)的一種并行爬取框架,它基于 hightman/httpclient 組件。 {placeholder tag=p i=507} {placeholder tag=span i=1127}官方文檔: https://github.com/hightman/pspider {placeholder tag=p i=508} {placeholder tag=span i=1128}官方網(wǎng)站: https://github.com/hightman/pspider {placeholder tag=p i=509} {placeholder tag=span i=1129} 42. Php-spider {placeholder tag=p i=510} {placeholder tag=span i=1130}實(shí)現(xiàn)語(yǔ)言:PHPGitHub {placeholder tag=p i=511} {placeholder tag=span i=1131}星標(biāo)數(shù): 1023 {placeholder tag=p i=512} {placeholder tag=span i=1132}官方支持鏈接:https://github.com/mvdbos/php-spider/issues {placeholder tag=p i=513} {placeholder tag=span i=1133} 簡(jiǎn)介: {placeholder tag=p i=514} {placeholder tag=span i=1134}一種可配置、可擴(kuò)展的 Web 爬蟲。 {placeholder tag=p i=515} {placeholder tag=span i=1135} 特性: {placeholder tag=p i=516} {placeholder tag=span i=1136}可限制爬取深度、隊(duì)列大小和最大下載數(shù)。 {placeholder tag=p i=517} {placeholder tag=span i=1137}支持基于 XPath、CSS 選擇器或普通(Plain old)PHP 添加自定義的 URI 發(fā)現(xiàn)邏輯。 {placeholder tag=p i=518} {placeholder tag=span i=1138}提供了一系列有用的 URI 過濾器,例如域限制等。 {placeholder tag=p i=519} {placeholder tag=span i=1139}收集爬取統(tǒng)計(jì)信息,用于形成報(bào)告。 {placeholder tag=p i=520} {placeholder tag=span i=1140}官方文檔: https://github.com/mvdbos/php-spider {placeholder tag=p i=521} {placeholder tag=span i=1141}官方網(wǎng)站: https://github.com/mvdbos/php-spider {placeholder tag=p i=522} {placeholder tag=span i=1142} 43. Spatie / Crawler {placeholder tag=p i=523} {placeholder tag=span i=1143}實(shí)現(xiàn)語(yǔ)言:PHPGitHub {placeholder tag=p i=524} {placeholder tag=span i=1144}星標(biāo)數(shù): 740 {placeholder tag=p i=525} {placeholder tag=span i=1145}官方支持鏈接:https://github.com/spatie/crawler/issues {placeholder tag=p i=526} {placeholder tag=span i=1146} 簡(jiǎn)介: {placeholder tag=p i=527} {placeholder tag=span i=1147}該軟件包提供了從 Web 站點(diǎn)爬取鏈接的類。 {placeholder tag=p i=528} {placeholder tag=span i=1148}在實(shí)現(xiàn)的底層機(jī)制上,使用了 GuzzleHttp/Promise 并發(fā)爬取多個(gè) URL。 {placeholder tag=p i=529} {placeholder tag=span i=1149}該爬蟲支持執(zhí)行 JavaScript,可以爬取使用 JavaScript 渲染的站點(diǎn)。 {placeholder tag=p i=530} {placeholder tag=span i=1150}從實(shí)現(xiàn)的底層機(jī)制看,該特性使用了 Chrome 和 Puppeteer。 {placeholder tag=p i=531} {placeholder tag=span i=1151}官方文檔: https://github.com/spatie/crawler {placeholder tag=p i=532} {placeholder tag=span i=1152}官方網(wǎng)站: https://github.com/spatie/crawler {placeholder tag=p i=533} {placeholder tag=span i=1153} Ruby 實(shí)現(xiàn)的開源 Web 爬蟲 {placeholder tag=p i=534} {placeholder tag=span i=1154} 44. Mechanize {placeholder tag=p i=535} {placeholder tag=span i=1155}實(shí)現(xiàn)語(yǔ)言:RubyGitHub {placeholder tag=p i=536} {placeholder tag=span i=1156}星標(biāo)數(shù): 3728 {placeholder tag=p i=537} {placeholder tag=span i=1157}官方支持鏈接:https://github.com/sparklemotion/mechanize/issues {placeholder tag=p i=538} {placeholder tag=span i=1158} 簡(jiǎn)介: {placeholder tag=p i=539} {placeholder tag=span i=1159}Mechanize 軟件庫(kù)用于實(shí)現(xiàn)于 Web 站點(diǎn)的自動(dòng)交互。 {placeholder tag=p i=540} {placeholder tag=span i=1160}Mechanize 自動(dòng)按重定向存儲(chǔ)并發(fā)送 Cookie。 {placeholder tag=p i=541} {placeholder tag=span i=1161}可以根據(jù)鏈接提交表單,支持填寫和提交表單域。 {placeholder tag=p i=542} {placeholder tag=span i=1162}Mechanize 也可跟蹤用戶訪問過站點(diǎn)的歷史記錄。 {placeholder tag=p i=543} {placeholder tag=span i=1163}官方文檔: http://docs.seattlerb.org/mechanize/ {placeholder tag=p i=544} {placeholder tag=span i=1164}官方網(wǎng)站: https://github.com/sparklemotion/mechanize {placeholder tag=p i=545} {placeholder tag=span i=1165} GO 編寫的開源 Web 爬蟲 {placeholder tag=p i=546} {placeholder tag=span i=1166} 45. Colly {placeholder tag=p i=547} {placeholder tag=span i=1167}實(shí)現(xiàn)語(yǔ)言:GoGitHub {placeholder tag=p i=548} {placeholder tag=span i=1168}星標(biāo)數(shù): 5439 {placeholder tag=p i=549} {placeholder tag=span i=1169}官方支持鏈接:https://github.com/gocolly/colly/issues {placeholder tag=p i=550} {placeholder tag=span i=1170} 簡(jiǎn)介: {placeholder tag=p i=551} {placeholder tag=span i=1171}為 Go 愛好者提供了一種快速且適用的爬取框架。Colly 提供了非常清晰的接口,可用于編寫任何類型的爬蟲和數(shù)據(jù)獲取工具。Colly 使得用戶可以輕易地從站點(diǎn)抽取結(jié)構(gòu)化數(shù)據(jù)。這些數(shù)據(jù)適用于大范圍的應(yīng)用,例如數(shù)據(jù)挖掘、數(shù)據(jù)處理和歸檔。 {placeholder tag=p i=552} {placeholder tag=span i=1172} 特性: {placeholder tag=p i=553} {placeholder tag=span i=1173}清晰的 API。 {placeholder tag=p i=554} {placeholder tag=span i=1174}高速(支持單核每秒處理一千次以上的請(qǐng)求)。 {placeholder tag=p i=555} {placeholder tag=span i=1175}按域管理請(qǐng)求延遲和最大并發(fā)。 {placeholder tag=p i=556} {placeholder tag=span i=1176}自動(dòng) Cookie 和會(huì)話管理。 {placeholder tag=p i=557} {placeholder tag=span i=1177}同步 / 異步 / 并行爬取。 {placeholder tag=p i=558} {placeholder tag=span i=1178}支持緩存。 {placeholder tag=p i=559} {placeholder tag=span i=1179}對(duì)非 unicode 響應(yīng)的自動(dòng)編碼。 {placeholder tag=p i=560} {placeholder tag=span i=1180}支持 robots.txt 禁止規(guī)則。 {placeholder tag=p i=561} {placeholder tag=span i=1181}分布式爬取。 {placeholder tag=p i=562} {placeholder tag=span i=1182}可通過環(huán)境變量配置。 {placeholder tag=p i=563} {placeholder tag=span i=1183}支持?jǐn)U展。 {placeholder tag=p i=564} {placeholder tag=span i=1184}官方文檔: http://go-colly.org/docs/ {placeholder tag=p i=565} {placeholder tag=span i=1185}官方網(wǎng)站: http://go-colly.org/ {placeholder tag=p i=566} {placeholder tag=span i=1186} 46. Gopa {placeholder tag=p i=567} {placeholder tag=span i=1187}實(shí)現(xiàn)語(yǔ)言:GoGitHub {placeholder tag=p i=568} {placeholder tag=span i=1188}星標(biāo)數(shù): 169 {placeholder tag=p i=569} {placeholder tag=span i=1189}官方支持鏈接:https://github.com/infinitbyte/gopa/issues {placeholder tag=p i=570} {placeholder tag=span i=1190} 特性: {placeholder tag=p i=571} {placeholder tag=span i=1191}輕量級(jí),低資源占用,小于 100MB 的內(nèi)存需求。 {placeholder tag=p i=572} {placeholder tag=span i=1192}易于部署,無需任何運(yùn)行時(shí)和依賴關(guān)系。 {placeholder tag=p i=573} {placeholder tag=span i=1193}易于使用,不需要用戶具有任何編程和腳本技能,提供開箱即可用特性。 {placeholder tag=p i=574} {placeholder tag=span i=1194}官方文檔: https://github.com/infinitbyte/gopa {placeholder tag=p i=575} {placeholder tag=span i=1195}官方網(wǎng)站: https://github.com/infinitbyte/gopa {placeholder tag=p i=576} {placeholder tag=span i=1196} 47. Pholcus {placeholder tag=p i=577} {placeholder tag=span i=1197}實(shí)現(xiàn)語(yǔ)言:GoGitHub {placeholder tag=p i=578} {placeholder tag=span i=1198}星標(biāo)數(shù): 4341 {placeholder tag=p i=579} {placeholder tag=span i=1199}官方支持鏈接:https://github.com/henrylee2cn/pholcus/issues {placeholder tag=p i=580} {placeholder tag=span i=1200} 簡(jiǎn)介: {placeholder tag=p i=581} {placeholder tag=span i=1201} 特性: {placeholder tag=p i=582} {placeholder tag=span i=1202}一種強(qiáng)大的爬取工具。 {placeholder tag=p i=583} {placeholder tag=span i=1203}支持三種運(yùn)行模式:?jiǎn)螜C(jī)、服務(wù)器和客戶。 {placeholder tag=p i=584} {placeholder tag=span i=1204}提供三種操作接口:Web、GUI 和命令行。 {placeholder tag=p i=585} {placeholder tag=span i=1205}官方文檔: https://pholcus.gitbooks.io/docs/ {placeholder tag=p i=586} {placeholder tag=span i=1206}官方網(wǎng)站: https://github.com/henrylee2cn/pholcus {placeholder tag=p i=587} {placeholder tag=span i=1207} R 編寫的開源 Web 爬蟲 {placeholder tag=p i=588} {placeholder tag=span i=1208} 48. Rvest {placeholder tag=p i=589} {placeholder tag=span i=1209}實(shí)現(xiàn)語(yǔ)言:RGitHub {placeholder tag=p i=590} {placeholder tag=span i=1210}星標(biāo)數(shù): 969 {placeholder tag=p i=591} {placeholder tag=span i=1211}官方支持鏈接:https://github.com/hadley/rvest/issues {placeholder tag=p i=592} {placeholder tag=span i=1212} 簡(jiǎn)介: {placeholder tag=p i=593} {placeholder tag=span i=1213}Rvest 為用戶從 Web 頁(yè)面抽取信息提供幫助。 {placeholder tag=p i=594} {placeholder tag=span i=1214}它在設(shè)計(jì)上使用了 magrittr 軟件包,易于表達(dá)通用 Web 抽取。 {placeholder tag=p i=595} {placeholder tag=span i=1215}官方文檔: https://cran.r-project.org/web/packages/rvest/rvest.pdf {placeholder tag=p i=596} {placeholder tag=span i=1216}官方網(wǎng)站: https://github.com/hadley/rvest {placeholder tag=p i=597} {placeholder tag=span i=1217} Scala 編寫的開源 Web 爬蟲 {placeholder tag=p i=598} {placeholder tag=span i=1218} 49. Sparkler {placeholder tag=p i=599} {placeholder tag=span i=1219}實(shí)現(xiàn)語(yǔ)言: ScalaGitHub {placeholder tag=p i=600} {placeholder tag=span i=1220}星標(biāo)數(shù): 198 {placeholder tag=p i=601} {placeholder tag=span i=1221}官方支持鏈接:https://github.com/USCDataScience/sparkler/issues {placeholder tag=p i=602} {placeholder tag=span i=1222} 簡(jiǎn)介: {placeholder tag=p i=603} {placeholder tag=span i=1223}Web 爬蟲是一種機(jī)器人程序,它從 Web 網(wǎng)站采集資源,用于構(gòu)建搜索引擎、知識(shí)庫(kù)等應(yīng)用。Sparkler(“Spark-Crawler”的縮寫)是一種新型的 Web 爬蟲,它通過整合 Spark、Kafka、Lucene/Solr、Tika、pf4j 等多種 Apache 項(xiàng)目,使用了分布式計(jì)算和信息檢索領(lǐng)域的最新進(jìn)展。 {placeholder tag=p i=604} {placeholder tag=span i=1224} 特性: {placeholder tag=p i=605} {placeholder tag=span i=1225}提供更高的性能,具有更好的容錯(cuò)。 {placeholder tag=p i=606} {placeholder tag=span i=1226}支持復(fù)雜和近實(shí)時(shí)分析。 {placeholder tag=p i=607} {placeholder tag=span i=1227}實(shí)時(shí)輸出數(shù)據(jù)流。 {placeholder tag=p i=608} {placeholder tag=span i=1228}可擴(kuò)展的插件框架。 {placeholder tag=p i=609} {placeholder tag=span i=1229}通用解析器。 {placeholder tag=p i=610} {placeholder tag=span i=1230}官方文檔: http://irds.usc.edu/sparkler/dev/development-environment-setup.html#contributing-source {placeholder tag=p i=611} {placeholder tag=span i=1231}官方網(wǎng)站: http://irds.usc.edu/sparkler/ {placeholder tag=p i=612} {placeholder tag=span i=1232} Perl 編寫的開源 Web 爬蟲 {placeholder tag=p i=613} {placeholder tag=span i=1233} 50. Web-scraper {placeholder tag=p i=614} {placeholder tag=span i=1234}實(shí)現(xiàn)語(yǔ)言:PerlGitHub {placeholder tag=p i=615} {placeholder tag=span i=1235}星標(biāo)數(shù): 91 {placeholder tag=p i=616} {placeholder tag=span i=1236}官方支持鏈接:https://github.com/miyagawa/web-scraper/issues {placeholder tag=p i=617} {placeholder tag=span i=1237} 簡(jiǎn)介: {placeholder tag=p i=618} {placeholder tag=span i=1238}Web Scraper 是一種使用 HTML、CSS 選擇器或 XPath 表達(dá)式的 Web 采集工具集。 {placeholder tag=p i=619} {placeholder tag=span i=1239}官方文檔: https://github.com/miyagawa/web-scraper {placeholder tag=p i=620} {placeholder tag=span i=1240}官方網(wǎng)站: https://github.com/miyagawa/web-scraper {placeholder tag=p i=621} {placeholder tag=span i=1241} 總 結(jié) {placeholder tag=p i=622} {placeholder tag=span i=1242}開源 Web 爬取應(yīng)用紛繁多樣,在此難以一一枚舉。每種爬取應(yīng)用分別各具特長(zhǎng),適用于不同用戶的需求。 {placeholder tag=p i=623} {placeholder tag=span i=1243}用戶可根據(jù)自己的需求和技術(shù)要求選取適用的工具。也許用戶會(huì)從上述工具中做出選擇,也許會(huì)選擇本文列表之外的工具。在實(shí)踐中,用戶只需根據(jù)任務(wù)的不同做出一個(gè)合理的選擇,這完全取決于最終用戶。其中至關(guān)重要的是,用戶必須要了解每種工具的獨(dú)特優(yōu)勢(shì),并利用這些優(yōu)勢(shì)服務(wù)于用戶自身的業(yè)務(wù),或是自身所承擔(dān)的其它任何任務(wù)。