首页 > GO > 50 种最棒的开源爬虫框架/项目[转]
2021
08-24

50 种最棒的开源爬虫框架/项目[转]

Python 编写的开源 Web 爬虫

1. Scrapy

· 实现语言:Python

· GitHub Star 数:28660

· 官方支持链接

50 种最棒的开源爬虫框架/项目[转] - 第1张  | 技术人生

简介

· 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

· 实现语言:Python

· GitHub Star 数:1274

· 官方支持链接

简介

· Cola 是一种高层分布式爬取框架,实现从网站爬取网页,并从中抽取结构化数据。

· 它提供了一种实现目标数据获取的简单且灵活的方式。

· 用户只需要编写其中一部分代码,就可在本地和分布式环境下运行。

特性

· 高层分布式爬取框架。

· 简单且高速。

· 灵活。

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

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

3. Crawley

· 实现语言 Python

· GitHub Star 数: 144

· 官方支持链接

简介

· 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

· 实现语言: Python

· GitHub Star 数: 2803

· 官方支持链接

简介

· MechanicalSoup 是一种设计模拟人类使用 Web 浏览器行为的 Python 软件库,它基于解析软件库 BeautifulSoup 构建。

· 如果开发人员需要从单个站点采集数据,或是不需要大量数据采集,那么使用 MechanicalSoup 是一种简单高效的方法。

· MechanicalSoup 自动存储和发送 Cookie、跟踪重定向、支持链接跟随和提交表单。

特性

· 轻量级。

· 支持 Cookie 处理器。

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

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

5. PySpider

· 实现语言: Python

· GitHub Star 数: 11803

· 官方支持链接

简介

· 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

· 实现语言: Python

· GitHub Star 数: 6250

· 官方支持链接

50 种最棒的开源爬虫框架/项目[转] - 第2张  | 技术人生

简介

· 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

· 实现语言: Python

· 官方支持链接

50 种最棒的开源爬虫框架/项目[转] - 第3张  | 技术人生

简介

· 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 爬虫

· 实现语言: Python

· GitHub Star 数: 152

· 官方支持链接

50 种最棒的开源爬虫框架/项目[转] - 第4张  | 技术人生

简介

· Spidy 是一种从命令行运行的 Web 爬虫。易于使用。用户只需提供 Web 网页的 URL 链接,Spidy 就可以开始爬取!Spidy 无疑是一种整体爬取 Web 的简单有效的方式。

· Spidy 使用 Python 请求查询 Web 页面,并使用 lxml 抽取页面中的所有链接。非常简单!

特性

· 错误处理。

· 跨平台兼容性。

· 频繁时间戳日志。

· 可移植性。

· 用户友好的日志。

· 保存 Web 页面。

· 支持文件压缩。

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

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

9. Garb

· 实现语言: Python

· GitHub Star 数: 1627

· 官方支持链接

简介

· 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

· 实现语言: Java

· GitHub Star 数: 1743

· 官方支持链接

50 种最棒的开源爬虫框架/项目[转] - 第5张  | 技术人生

简介

· 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

· GitHub Star 数: 1236

· 官方支持链接

简介

· 在使用 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 爬虫

· 实现语言: Java

· GitHub Star 数: 154

· 官方支持链接

50 种最棒的开源爬虫框架/项目[转] - 第6张  | 技术人生

简介

· 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

· 实现语言: Java

· GitHub Star 数: 3039

· 官方支持链接

简介

· crawler4j 是一种 Java 编写的开源 Web 爬虫,提供了爬取 Web 网站的基本接口。

· 开发人员可以使用 crawler4j 在数分钟内建立一个多线程 Web 爬虫。

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

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

14. Gecco

· 实现语言: Java

· GitHub Star 数: 1245

· 官方支持链接

简介

· 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

· 实现语言: Java

· GitHub Star 数:24

· 官方支持链接

简介

· 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

· 实现语言:Java

· 官方支持链接

50 种最棒的开源爬虫框架/项目[转] - 第7张  | 技术人生

简介

· 对于寻求可满足企业级需求的开源 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

· 当前尚不提供官方支持。

50 种最棒的开源爬虫框架/项目[转] - 第8张  | 技术人生

简介

· 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

· 实现语言: Java

· GitHub Star 数: 2400

· 官方支持链接

简介

· Spiderman 是一种 Java 开源 Web 数据抽取工具。它采集特定的 Web 页面,并从中抽取有用数据。

· Spiderman 主要使用 XPath 和正则表达式等技术抽取实际数据。

特性

· 更高的性能。

· 持久化集合状态。

· 分布式。

· 支持 JavaScript。

· – 官方文档https://gitee.com/l-weiwei/spiderman

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

19. WebCollector :

· 实现语言: Java

· GitHub Star 数: 1986

· 官方支持链接

简介

· WebCollector 是一种基于 Java 的开源 Web 爬虫框架。

· 它为实现 Web 爬取功能提供了一下基本的接口。用户可以使用它在五分钟内建立起一个多线程爬虫。

特性

· 快速。

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

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

20. Webmagic

· 实现语言: Java

· GitHub Star 数: 6891

· 官方支持链接

50 种最棒的开源爬虫框架/项目[转] - 第9张  | 技术人生

简介

· WebMagic 是一种可扩展的爬虫框架。

· WebMagic 涵盖了爬虫的整个生命周期,包括下载、URL 管理、内容抽取和持久化。

· 可用于简化一些特定爬虫的开发。

特性

· 高度灵活的简单内核。

· 提供实现 HTML 抽取的简单 API。

· 使用 POJO 标注定制爬虫,无需配置。

· 支持多线程和分布式。

· 易于集成。

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

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

21. StormCrawler

· 实现语言: Java

· GitHub Star 数:437

· 官方支持链接

50 种最棒的开源爬虫框架/项目[转] - 第10张  | 技术人生

简介

· StormCrawler 是一种基于 Apache Storm 构架分布式 Web 爬虫的开源 SDK。

· StormCrawler 为开发人员构建爬虫提供了软件库和一系列资源。

· StormCrawler 完全适用于以数据流提供需获取和解析的 URL 的情况,也非常适用于大规模递归性爬取,尤其是需要低延迟的情况。

特性

· 可扩展。

· 有弹性。

· 低延迟。

· 易于扩展。

· 运行良好且高效。

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

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

JavaScript 编写的开源 Web 爬虫

22. NodeCrawler

· 实现语言: JavaScript

· GitHub Star 数: 3999

· 官方支持链接

50 种最棒的开源爬虫框架/项目[转] - 第11张  | 技术人生

简介

· 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

· 实现语言: JavaScript

· GitHub Star 数:1764

· 官方支持链接

简介

· Simplecrawler 设计提供基本的、灵活且稳定的网站爬取 API。

· Simplecrawler 在实现上考虑了针对特大型 Web 站点的归档、分析和搜索。它可爬取上百万页面,并毫无问题地向磁盘写入数十 GB 数据。

特性

· 提供了用于自动检测链接资源的一些简单逻辑,用户可自行替换和添加。

· 自动请求任何 robots.txt 禁止规则。

· 具有灵活的队列系统,可在磁盘上冻结和解冻。

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

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

24. Js-crawler :

· 实现语言: JavaScript

· GitHub Star 数: 167

· 官方支持链接)

简介

· 使用 NodeJS 实现的 Web 爬虫,支持 HTTP 和 HTTPS

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

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

25. Webster

· 实现语言: JavaScript

· GitHub Star 数: 201

· 官方支持链接

简介

· Webster 是一种使用 NodeJS 编写的可靠 Web 爬取和采集框架,用于爬取 Web 站点并从页面中抽取结构化数据。

· 与其他爬取框架的不同之处在于,Webster 可以抓取浏览器客户端的 JavaScript 和 Ajax 请求呈现的内容。

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

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

26. Node-osmosis

· 实现语言:JavaScript

· GitHub Star 数: 3630

· **官方支持链接

简介

* 一种使用 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

· 实现语言:JavaScript

· GitHub Star 数: 4341

· 官方支持链接

简介

· 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 扩展

· 实现语言:JavaScript

· GitHub Star 数: 775

· 官方支持链接

简介

· 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 爬虫

· 实现语言:JavaScript

· GitHub Star 数: 3256

· 官方支持链接

50 种最棒的开源爬虫框架/项目[转] - 第12张  | 技术人生

简介

· 使用基本 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

· 实现语言:JavaScript

· GitHub Star 数: 4464

· 官方支持链接

50 种最棒的开源爬虫框架/项目[转] - 第13张  | 技术人生

特性

· 模式灵活:支持字符串、数组、对象以及嵌套对象结构。模式并非绑定于所抽取的页面结构,支持用户获取选定结构中的数据。

· 可组合(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

· 实现语言:C

· GitHub Star 数: 747

· 官方支持链接

50 种最棒的开源爬虫框架/项目[转] - 第14张  | 技术人生

简介

· HTTracks 是一项免费(GPL、Libre/自由软件)且易于使用的离线浏览器功能。

· 支持用户将 Web 站点下载到本地目录,递归构建全部目录,以及获取 HTML、图像和其它文件到本地计算机。

· HTTrack 会维持原站点的相对链接结构。用户可以用浏览器打开本地的“镜像”页面,并逐个链接浏览,与在线浏览无异。

· HTTrack 也支持对已有镜像站点的更新,以及从中断点恢复下载。

· HTTrack 高度可配置,并提供帮助文档。

特性

· 多语言窗口,提供对 Linux/UNIX 的接口。

· 镜像单个站点,或是一并镜像多个站点。

· 支持按文件类型、链接位置、结构深度、文件大小过滤,接受或拒绝站点或文件名。

· 支持代理,可最大化速度,并可选认证。

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

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

32. GNU Wget

· 实现语言:C

· GitHub Star 数: 22

· 官方支持链接

50 种最棒的开源爬虫框架/项目[转] - 第15张  | 技术人生

简介

· 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

· 实现语言:C++

· GitHub Star 数: 912

· **官方支持链接

简介

· Gigablast 是一种开源的 Web 和企业搜索引擎,也是一种爬虫。

· Gigablast 是自身维护数十亿页面检索索引的数家美国搜索引擎之一。

特性

· 大规模。

· 高性能。

· 实时信息检索技术。

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

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

C#编写的开源 Web 爬虫

34. http://Arachnode.net

· 实现语言:C#

· GitHub Star 数: 9

· 官方支持链接

简介

· http://Arachnode.net 适用于寻求开源 Web 爬虫的 C#开发人员。

· http://Arachnode.net 软件类库从因特网下载内容、对内容做索引,并对过程做定制。

· 用户可使用该工具做个人内容聚合,也可用于将下载的内容抽取、采集和解析为多个表单。

· http://Arachnode.net 索引所发现的内容,并存储在 http://Lucene.NET 索引中。

· http://Arachnode.net 非常适用于文本挖掘,也适用于学习高级爬取技术。

特性

· 可配置规则和行为。

· 集成 http://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

· 实现语言:C#

· GitHub Star 数: 1392

· 官方支持链接

简介

· Abot 是一种 C#实现的开源 Web 爬虫,主要侧重于速度和灵活性。

· Abot 在实现中考虑了底层技术细节,包括多线程、HTTP 请求、调度、链接解析等。

· 用户只需注册事件,就可以处理分页数据。

· 支持用户插入自己的核心接口实现,实现对整个爬取过程的完全控制。

特性

· 高速!

· 易于定制(可插拔架构,支持用户定义爬取内容和方式)。

· 经过大量的单元测试(高代码覆盖率)。

· 非常轻量级(并非过度工程化)。

· 无过程之外的依赖,例如对数据库、所安装服务等的依赖。

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

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

36. Hawk

· 实现语言:C#

· GitHub Star 数: 1875

· 官方支持链接

简介

· HAWK 无需用户做任何编程,提供图形可视化数据获取和清理工具,并以 GPL 协议开源。

特性

· 无需编程,即可实现对 Web 内容的智能分析。

· 所见即所得(WYSIWYG),可视化拉拽,支持对数据转换和过滤等的快速处理。

· 支持从多种数据库和文件中导入和导出。

· 任务可保存并可重用。

· 尤其适用于爬取和数据清理,但其功能并不仅局限于此。

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

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

37. SkyScraper

· 实现语言:C#

· GitHub Star 数: 39

· 官方支持链接

简介

· 一种异步 Web 获取和爬虫,使用了 async/await 和响应式扩展。

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

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

.NET 编写的 Web 爬虫

38. DotnetSpider

· 实现语言:.NET

· GitHub Star 数: 1382

· 官方支持链接

简介

· DotnetSpider 是一种使用.NET Standard 实现的 Web 爬取软件库,类似于 WebMagic 和 Scrapy。

· 它是一种适用于.NET 的轻量级、高效和高速的高层 Web 爬取和获取框架。

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

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

PHP 编写的开源 Web 爬虫

39. Goutte

· 实现语言:PHP

· GitHub Star 数: 6574

· 官方支持链接

简介

· Goutte 是一种 PHP 实现的屏幕抓取和 Web 爬取软件库。

· Goutte 为爬取 Web 站点和从 HTML/XML 响应中抽取数据提供了很好的 API。

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

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

40. Dom-crawler

· 实现语言:PHP

· GitHub Star 数: 1340

· 官方支持链接

简介

· DomCrawler 组件简化了对 HTML 和 XML 文档的 DOM 浏览。

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

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

41. Pspider

· 实现语言:PHP

· GitHub Star 数: 249

· 官方支持链接

简介

· Pspider 是最近完全使用 PHP 实现的一种并行爬取框架,它基于 hightman/httpclient 组件。

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

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

42. Php-spider

· 实现语言:PHP

· GitHub Star 数: 1023

· 官方支持链接

简介

· 一种可配置、可扩展的 Web 爬虫。

特性

· 可限制爬取深度、队列大小和最大下载数。

· 支持基于 XPath、CSS 选择器或普通(Plain old)PHP 添加自定义的 URI 发现逻辑。

· 提供了一系列有用的 URI 过滤器,例如域限制等。

· 收集爬取统计信息,用于形成报告。

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

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

43. Spatie / Crawler

· 实现语言:PHP

· GitHub Star 数: 740

· **官方支持链接

简介

· 该软件包提供了从 Web 站点爬取链接的类。在实现的底层机制上,使用了 GuzzleHttp/Promise 并发爬取多个 URL。

· 该爬虫支持执行 JavaScript,可以爬取使用 JavaScript 渲染的站点。从实现的底层机制看,该特性使用了 Chrome 和 Puppeteer。

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

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

Ruby 实现的开源 Web 爬虫

44. Mechanize

· 实现语言:Ruby

· GitHub Star 数: 3728

· 官方支持链接

简介

· Mechanize 软件库用于实现于 Web 站点的自动交互。

· Mechanize 自动按重定向存储并发送 Cookie。可以根据链接提交表单,支持填写和提交表单域。

· Mechanize 也可跟踪用户访问过站点的历史记录。

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

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

GO 编写的开源 Web 爬虫

45. Colly

· 实现语言:Go

· GitHub Star 数: 5439

· 官方支持链接

50 种最棒的开源爬虫框架/项目[转] - 第16张  | 技术人生

简介

· 为 Go 爱好者提供了一种快速且适用的爬取框架。

· Colly 提供了非常清晰的接口,可用于编写任何类型的爬虫和数据获取工具。

· Colly 使得用户可以轻易地从站点抽取结构化数据。这些数据适用于大范围的应用,例如数据挖掘、数据处理和归档。

特性

· 清晰的 API。

· 高速(支持单核每秒处理一千次以上的请求)。

· 按域管理请求延迟和最大并发。

· 自动 Cookie 和会话管理。

· 同步/异步/并行爬取。

· 支持缓存。

· 对非 unicode 响应的自动编码。

· 支持 robots.txt 禁止规则。

· 分布式爬取。

· 可通过环境变量配置。

· 支持扩展。

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

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

46. Gopa

· 实现语言:Go

· GitHub Star 数: 169

· 官方支持链接

特性

· 轻量级,低资源占用,小于 100MB 的内存需求。

· 易于部署,无需任何运行时和依赖关系。

· 易于使用,不需要用户具有任何编程和脚本技能,提供开箱即可用特性。

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

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

47. Pholcus

· 实现语言:Go

· GitHub Star 数: 4341

· 官方支持链接

50 种最棒的开源爬虫框架/项目[转] - 第17张  | 技术人生

简介

· 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

· 实现语言:R

· GitHub Star 数: 969

· 官方支持链接

简介

· Rvest 为用户从 Web 页面抽取信息提供帮助。它在设计上使用了 magrittr 软件包,易于表达通用 Web 抽取。

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

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

Scala 编写的开源 Web 爬虫

49. Sparkler

· 实现语言: Scala

· GitHub Star 数: 198

· 官方支持链接

简介

· 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

· 实现语言:Perl

· GitHub Star 数: 91

· 官方支持链接

简介

· Web Scraper 是一种使用 HTML、CSS 选择器或 XPath 表达式的 Web 采集工具集。

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

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

小结

以上罗列了 50 个不同编程语言下的不错爬虫框架/项目,感兴趣可以用用看。

英文原文: http://www.prowebscraper.com/blog/

最后编辑:
作者:sunny5156
喜欢技术....

留下一个回复