zoukankan      html  css  js  c++  java
  • 五十种最好的开源爬虫

    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

  • 相关阅读:
    NanoProfiler
    NanoProfiler
    Open Source Cassandra Gitbook for Developer
    Android Fragment使用(四) Toolbar使用及Fragment中的Toolbar处理
    Android Fragment使用(三) Activity, Fragment, WebView的状态保存和恢复
    Android Fragment使用(二) 嵌套Fragments (Nested Fragments) 的使用及常见错误
    Android Fragment使用(一) 基础篇 温故知新
    Set up Github Pages with Hexo, migrating from Jekyll
    EventBus源码解析 源码阅读记录
    Android M Permission 运行时权限 学习笔记
  • 原文地址:https://www.cnblogs.com/jscs/p/13672785.html
Copyright © 2011-2022 走看看