作为一个自动化程序或脚本,网络爬虫系统地爬取网页,以计算出它打算提取的数据的索引。就该过程而言,它被称为网络爬行或蜘蛛。
您可能想知道什么是网络爬虫应用程序或网络爬虫以及它是如何工作的。在此处查看此视频以了解更多信息。
您用于该过程的工具称为网络蜘蛛、网络数据提取软件和网站抓取工具。
网络爬虫应用程序今天如此重要的原因是因为它们可以通过多种方式加速业务的增长。在数据驱动的世界中,这些应用程序非常方便,因为它们整理了来自不同公共网站的信息和内容,并以易于管理的格式提供相同的信息和内容。借助这些应用程序,您可以密切关注散落在各处的信息碎屑 – 新闻、社交媒体、图像、文章、您的竞争对手等。
为了利用这些应用程序,需要调查和了解其不同方面和功能。在这篇博客中,我们将带您了解不同的开源网络爬虫库和工具,它们可以帮助您抓取、抓取网络和解析数据。
我们汇总了每种语言中可用的最佳开源网络爬虫库和工具的综合摘要:
Python 中的开源 Web 爬虫:
1.刮擦:
- 语言 : Python
- Github 星 : 28660
- 支持
描述:
- Scrapy 是一个快速的高级网络爬虫和网络抓取框架,用于抓取网站并从其页面中提取结构化数据。
- 它可以用于广泛的用途,从数据挖掘到监控和自动化测试。
- 它专为从网站中提取特定信息而构建,并允许您专注于使用 CSS 选择器和选择 XPath 表达式的数据提取。
- 如果您熟悉 Python,您将在几分钟内启动并运行。
- 它可以在 Linux、Mac OS 和 Windows 系统上运行。
特征:
- 内置支持使用扩展的 CSS 选择器和 XPath 表达式从 HTML/XML 源中提取数据。
- 生成多种格式(JSON、CSV、XML)的源导出。
- 建立在 Twisted 上
- 强大的编码支持和自动检测。
- 快速而强大。
– 文档 : https://docs.scrapy.org/en/latest/
– 官方网站 : https://scrapy.org/
2.可乐:
- 语言 : Python
- Github 星 : 1274
- 支持
描述:
- Cola 是一个高级分布式爬虫框架,用于爬取页面并从网站中提取结构化数据。
- 它提供了简单、快速而灵活的方式来实现您的数据采集目标。
- 用户只需要编写一段代码,就可以在本地和分布式模式下运行。
特征:
- 高级分布式爬网框架
- 简单快捷
- 灵活
– 文件 : https://github.com/chineking/cola
– 官方网站 : https://pypi.org/project/Cola/
3.克劳利:
- 语言 : Python
- Github 星 : 144
- 支持
描述:
- Crawley 是一个 pythonic 抓取/爬虫框架,旨在简化您将数据从网页提取到结构化存储(如数据库)中的方式。
特征:
- 基于 Eventlet 构建的高速 WebCrawler。
- 支持 Postgre、Mysql、Oracle、Sqlite 等关系数据库引擎。
- 支持 Mongodb 和 Couchdb 等 NoSQL 数据库。新增功能!
- 将数据导出为 Json、XML 或 CSV 格式。新增功能!
- 命令行工具。
- 使用您喜欢的工具提取数据。XPath 或 Pyquery(一个类似 Jquery 的 python 库)。
- Cookie 处理程序。
– 文档 : https://pythonhosted.org/crawley/
– 官方网站 : http://project.crawley-cloud.com/
4. 机械汤:
- 语言 : Python
- Github 星 : 2803
- 支持
描述:
- MechanicalSoup 是一个 python 库,旨在模拟人类使用 Web 浏览器的行为,并围绕解析库 BeautifulSoup 构建。
- 如果您需要从简单的站点抓取数据,或者不需要大量抓取,使用 MechanicalSoup 是一种简单有效的方法。
- MechanicalSoup自动存储和发送cookie,跟踪重定向,并可以跟踪链接和提交表格。
特征:
- 轻
- Cookie 处理程序。
– 文档 : https://mechanicalsoup.readthedocs.io/en/stable/
– 官方网站 : https://mechanicalsoup.readthedocs.io/
5. PySpider 的:
- 语言 : Python
- Github 星 : 11803
- 支持
描述:
- PySpider 是 Python 中一个强大的蜘蛛(网络爬虫)系统。
- 它支持 Javascript 页面并具有分布式架构。
- PySpider 可以将数据存储在您选择的数据库的后端,例如 MySQL、MongoDB、Redis、SQLite、Elasticsearch 等。
- 您可以使用 RabbitMQ、Beanstalk 和 Redis 作为消息队列。
特征:
- 强大的 WebUI,包括脚本编辑器、任务监视器、项目管理器和结果查看器
- 支持繁重的 AJAX 网站。
- 更舒适、更快速地刮痧
– 文档 : http://docs.pyspider.org/
– 官方网站 : https://github.com/binux/pyspider
6. 波西亚:
- 语言 : Python
- Github 星 : 6250
- 支持
描述:
- Portia 是由 Scrapinghub 创建的可视化抓取工具,不需要任何编程知识。
- 如果您不是开发人员,最好直接使用 Portia 来满足您的网络抓取需求。
- 您可以免费试用 Portia,而无需安装任何东西,您需要做的就是在 Scrapinghub 上注册一个帐户,然后您可以使用他们的托管版本。
- 如果您没有编程技能,在 Portia 中制作爬虫并提取 Web 内容非常简单。
- 您无需安装任何东西,因为 Portia 在网页上运行。
- 使用 Portia,您可以使用基本的点击工具来注释要提取的数据,并且基于这些注释,Portia 将了解如何从类似页面中抓取数据。
- 一旦检测到页面,Portia 将创建您创建的结构的样本。
特征:
- 点击、滚动、等待等操作都是通过记录和重放页面上的用户操作来模拟的。
- Portia 非常适合抓取基于 Ajax 驱动的网站(订阅 Splash 时),并且应该可以很好地与 Backbone、Angular 和 Ember 等繁重的 Javascript 框架配合使用。
– 文档 : https://portia.readthedocs.io/en/latest/index.html
– 官方网站 : https://github.com/scrapinghub/portia
7. 美汤:
- 语言 : Python
- 支持
描述:
- Beautiful Soup 是一个 Python 库,专为快速周转项目(如网络抓取)而设计
- 它位于 HTML 或 XML 解析器之上,提供用于迭代、搜索和修改解析树的 Python 习语。它通常可以为程序员节省数小时或数天的工作时间。
特征:
- Beautiful Soup 自动将传入文档转换为 Unicode,将传出文档转换为 UTF-8。
- Beautiful Soup 位于流行的 Python 解析器(如 lxml 和 html5lib)之上,允许您尝试不同的解析策略或以速度换取灵活性。
– 文件 : https://www.crummy.com/software/BeautifulSoup/bs4/doc/
– 官方网站 : https://www.crummy.com/software/BeautifulSoup/
8. Spidy Web 爬虫:
- 语言 : Python
- Github 星 : 152
- 支持
描述:
- Spidy 是一个易于使用的网络爬虫,可以从命令行运行。你必须给它一个网页的URL链接,它就会开始爬走!一种从网络上获取内容的非常简单有效的方法。
- 它使用 Python 请求来查询网页,并使用 lxml 从页面中提取所有链接。很简单!
特征:
- 错误处理
- 跨平台兼容性
- 频繁的时间戳记录
- 可移植性
- 用户友好的日志
- 网页保存
- 文件压缩
– 文档 : https://github.com/rivermont/spidy
– 官方网站 : http://project.crawley-cloud.com/
9. 抓取:
- 语言 : Python
- Github 星 : 1627
- 支持
描述:
- Grab 是一个用于构建网络爬虫的 python 框架。
- 使用 Grab,您可以构建各种复杂的网络爬虫,从简单的 5 行脚本到处理数百万个网页的复杂异步网站爬虫。
- Grab 提供了一个 API,用于执行网络请求和处理接收到的内容,例如与 HTML 文档的 DOM 树交互。
特征:
- HTTP和SOCKS代理,有/没有授权
- 自动字符集检测
- 强大的 API,可使用 XPATH 查询从 HTML 文档的 DOM 树中提取数据
- 自动 Cookie(会话)支持
– 文件 : https://grablib.org/en/latest/
– 官方网站 : https://github.com/lorien/grab
开源网络爬虫 Java:
10. 阿帕奇坚果:
- 语言 : Java
- Github 星 : 1743
- 支持
Description :
- Apache Nutch is a highly extensible and scalable open source web crawler software project.
- When it comes to best open source web crawlers, Apache Nutch definitely has a top place in the list.
- Apache Nutch is popular as a highly extensible and scalable open source code web data extraction software project great for data mining.
- Nutch can run on a single machine but a lot of its strength is coming from running in a Hadoop cluster.
- Many data analysts and scientists, application developers, and web text mining engineers all over the world use Apache Nutch.
- Apache Nutch 是一个用 Java 编写的跨平台解决方案。
特征:
- 默认情况下,提取和解析是分开完成的
- 支持多种文档格式:纯文本、HTML/XHTML+XML、XML、PDF、ZIP 等
- 使用 XPath 和命名空间进行映射
- 分布式文件系统(通过 Hadoop)
- 链接图数据库
- NTLM 身份验证
– 文档 : https://wiki.apache.org/nutch/
– 官方网站 : http://nutch.apache.org/
11. 赫里特里克斯:
- 语言 : Java
- Github star :1236
- 支持
描述:
- Heritrix 是 Java 中最受欢迎的免费和开源网络爬虫之一。实际上,它是一个可扩展的、网络规模的、档案质量的网络抓取项目。
- Heritrix 是一个非常可扩展和快速的解决方案。您可以立即抓取/存档一组网站。此外,它旨在遵守robots.txt排除指令和 META 机器人标签。
- 在 Linux/Unix like 和 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 星 : 154
- 支持
描述:
- ACHE 是一个专注的网络爬虫。
- 它收集满足某些特定条件的网页,例如,属于给定域或包含用户指定模式的网页。
- ACHE 与通用爬虫的不同之处在于,它使用页面分类器来区分给定域中的相关页面和不相关页面。
- 页面分类器可以从简单的正则表达式(例如,匹配包含特定单词的每个页面)到基于机器学习的分类模型。ACHE 还可以自动学习如何确定链接的优先级,以便有效地找到相关内容,同时避免检索不相关的内容。
特征:
- 定期抓取固定的网站列表
- 通过自动链接优先级发现和抓取新的相关网站
- 配置不同类型的页面分类器(机器学习、正则表达式等)
- 持续重新抓取站点地图以发现新页面
- 使用 Elasticsearch 对已抓取的页面编制索引
- 用于实时搜索已抓取页面的 Web 界面
- 用于爬虫监控的 REST API 和基于 Web 的用户界面
- 使用 TOR 代理抓取隐藏服务
– 文件 : http://ache.readthedocs.io/en/latest/
– 官方网站 : https://github.com/ViDA-NYU/ache
13. 爬虫4j:
- 语言 : Java
- Github 星 : 3039
- 支持
描述:
- crawler4j 是一个用于 Java 的开源网络爬虫,它提供了一个简单的 Web 抓取界面。
- 使用它,您可以在几分钟内设置多线程网络爬虫。
– 文档 : https://github.com/yasserg/crawler4j
– 官方网站 : https://github.com/yasserg/crawler4j
14. 壁虎:
- 语言 : Java
- Github 星 : 1245
- 支持
描述:
- Gecco 是一款易于使用的轻量级网络爬虫,使用 Java 语言开发。Gecco integriert jsoup, httpclient, fastjson, spring, htmlunit, redission ausgezeichneten 框架,让你只需要配置一些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 明星 :24
- 支持
描述:
- BUbiNG会让你大吃一惊。它是下一代开源网络爬虫。BUbiNG 是一个 Java 完全分布式爬虫(没有中央协调)。它每秒能够抓取数千页。收集非常大的数据集。
- BUbiNG分布基于现代高速协议,因此可以实现非常高的吞吐量。
- BUbiNG 为大众提供了大量爬行。它是完全可配置的,可以毫不费力地扩展,并与垃圾邮件检测集成在一起。
特征:
- 高并行度
- 完全分布式
- 使用 JAI4J,这是 JGroups 上的一个薄层,用于处理作业分配。
- 使用剥离页面的指纹检测(目前)近乎重复的内容
- 快
- 大量爬行。
– 文件 : http://law.di.unimi.it/software/bubing-docs/index.html
– 官方网站 : http://law.di.unimi.it/software.php#bubing
16. 那可那:
- 语言 : Java
- 支持
描述:
- 对于那些正在为企业需求搜索开源网络爬虫的人来说,这是一个很好的工具。
- Norconex允许您抓取任何Web内容。您可以单独运行此功能齐全的收集器,也可以将其嵌入到您自己的应用程序中。
- 适用于任何操作系统。可以在平均容量的单个服务器上抓取数百万个。此外,它还具有许多内容和元数据操作选项。此外,它还可以提取页面“特色”图像。
特征:
- 多线程
- 根据不同的时间表支持不同的命中间隔
- 从多种文件格式(HTML、PDF、Word 等)中提取文本
- 提取与文档关联的元数据
- 支持使用 JavaScript 呈现的页面
- 语言检测
- 翻译支持
- 可配置的爬行速度
- 检测已修改和删除的文档
- 支持外部命令来解析或操作文档
– 文档 : http://www.norconex.com/collectors/collector-http/getting-started
– 官方网站 : http://www.norconex.com/collectors/collector-http/
17. WebSPHINX的:
- 语言 : Java
- 暂无支持
描述:
- WebSphinix 是一款非常易于使用的个人和可定制的网络爬虫。它专为高级 Web 用户和 Java 程序员设计,允许他们自动爬取 Web 的一小部分。
- 该 Web 数据提取解决方案也是一个全面的 Java 类库和交互式开发软件环境。WebSphinix 包括两部分:Crawler Workbench 和 WebSPHINX 类库。
- Crawler Workbench 是一个很好的图形用户界面,允许您配置和控制可自定义的 Web 爬虫。该库支持使用 Java 编写 Web 爬虫。
- WebSphinix 可在 Windows、Linux、Mac 和 Android IOS 上运行。
特征:
- 将网页集合可视化为图形
- 将页面连接在一起,以便将其作为单个文档查看或打印
- Extract all text matching a certain pattern.
- Tolerant HTML parsing
- Support for the robot exclusion standard
- Common HTML transformations
- Multithreaded Web page retrieval
– Documentation : https://www.cs.cmu.edu/~rcm/websphinx/doc/index.html
– Official site : https://www.cs.cmu.edu/~rcm/websphinx/#about
18. Spiderman :
- Language : Java
- Github star : 2400
- Support
Description :
- Spiderman is a Java open source web data extraction tool. It collects specific web pages and extracts useful data from those pages.
- 蜘蛛侠主要使用XPath和正则表达式等技术来提取真实数据。
特征:
- 更高的性能
- 集合状态持久性
- 分散式
- 支持JS脚本
– 文件 : https://gitee.com/l-weiwei/spiderman
– 官方网站 : https://gitee.com/l-weiwei/spiderman
19. 网络收集器:
- 语言 : Java
- Github 明星 : 1986
- 支持
描述:
- WebCollector 是一个基于 Java 的开源 Web 爬虫框架。
- 它提供了一些简单的网页抓取界面,您可以在不到5分钟的时间内设置一个多线程的网页爬虫。
特征:
- 快
– 文件 : https://github.com/CrawlScript/WebCollector
– 官方网站 : https://github.com/CrawlScript/WebCollector
20. 网络魔术:
- 语言 : Java
- Github 星 : 6891
- 支持
描述:
- 可扩展的爬虫框架。
- 它涵盖了爬虫的整个生命周期:下载、url管理、内容提取和持久化。
- 它可以简化特定爬虫的开发。
特征:
- 核心简单,灵活性高。
- 用于 html 提取的简单 API。
- 使用 POJO 进行注释以自定义爬虫,无需配置。
- 多线程和分发支持。
- 易于集成。
– 文件 : http://webmagic.io/docs/en/
– 官方网站 : https://github.com/code4craft/webmagic
21. 风暴爬行者:
- 语言 : Java
- Github 星 : 437
- 支持
Description :
- StormCrawler is an open source SDK for building distributed web crawlers based on Apache Storm.
- StormCrawler is a library and collection of resources that developers can leverage to build their own crawlers.
- StormCrawler is perfectly suited to use cases where the URL to fetch and parse come as streams but is also an appropriate solution for large scale recursive crawls, particularly where low latency is required.
特征:
- 可 伸缩
- 弹性
- 低延迟
- 易于扩展
- 彬彬有礼,效率高
– 文档 : http://stormcrawler.net/docs/api/
– 官方网站 : http://stormcrawler.net/
开源网络爬虫 JavaScript:
22. 节点爬虫:
- 语言 : Javascript
- Github 星 : 3999
- 支持
描述:
- Nodecrawler 是 NodeJS 的流行网络爬虫,使其成为一种非常快速的爬虫解决方案。
- 如果您更喜欢使用 JavaScript 编码,或者您主要处理 Javascript 项目,那么 Nodecrawler 将是最适合使用的网络爬虫。它的安装也非常简单。
- JSDOM 和 Cheerio(用于 HTML 解析)将其用于服务器端渲染,而 JSDOM 则更健壮。
特征:
- 服务器端 DOM 和使用 Cheerio(默认)或 JSDOM 自动插入 jQuery
- 可配置的池大小和重试次数
- 控制速率限制
- 请求的优先级队列
- forceUTF8 模式,让爬虫为您处理字符集检测和转换
- 兼容 4.x 或更高版本
– 文档 : https://github.com/bda-research/node-crawler
– 官方网站 : http://nodecrawler.org/
23. 简单爬虫:
- 语言 : Javascript
- Github 明星:1764
- 支持
描述:
- simplecrawler 旨在为抓取网站提供基本、灵活和强大的 API。
- 它是为了存档、分析和搜索一些非常大的网站而编写的,并且愉快地咀嚼了数十万个页面,并将数十GB写入磁盘,没有问题。
特征:
- 提供一些用于自动检测链接资源的简单逻辑 – 您可以替换或增强这些资源
- 自动遵守任何robots.txt规则
- 具有灵活的队列系统,可以冷冻到磁盘和解冻
– 文档 : https://github.com/simplecrawler/simplecrawler
– 官方网站 : https://www.npmjs.com/package/simplecrawler
24. Js爬虫:
- 语言 : Javascript
- Github 星 : 167
- 支持
描述:
- Node.JS的网络爬虫,支持 HTTP 和 HTTPS。
– 文档 : https://github.com/antivanov/js-crawler
– 官方网站 : https://github.com/antivanov/js-crawler
25. 韦伯斯特:
- 语言 : Javascript
- Github 星 : 201
- 支持
描述:
- Webster 是一个可靠的网络爬虫和抓取框架,用 Node.js 编写,用于抓取网站并从其页面中提取结构化数据。
- 与其他爬虫框架不同的是,Webster可以抓取浏览器客户端javascript和ajax请求呈现的内容。
– 文件 : http://webster.zhuyingda.com/
– 官方网站 : https://github.com/zhuyingda/webster
26. 节点渗透:
- 语言 : Javascript
- Github 星 : 3630
- 支持
描述:
- NodeJS 的 HTML/XML 解析器和网络爬虫。
特征:
- 使用本机 libxml C 绑定
- 干净的 promise 般的界面
- 支持 CSS 3.0 和 XPath 1.0 选择器混合
- 嘶嘶声选择器、光滑选择器等
- 没有像 jQuery、cheerio 或 jsdom 这样的大型依赖项
- 编写深度和复杂的数据结构
- HTML 解析器功能
- 快速解析
- 非常快速的搜索
- Small memory footprint
- HTML DOM features
- Load and search ajax content
- DOM 交互和事件
- 执行嵌入式和远程脚本
- 在 DOM 中执行代码
- HTTP 请求功能
- 记录 URL、重定向和错误
- Cookie jar 和自定义 Cookie/标头/用户代理
- 登录/表单提交、会话 Cookie 和基本身份验证
- 单个代理或多个代理并处理代理故障
- 重试和重定向限制
– 文档 : https://rchipka.github.io/node-osmosis/global.html
– 官方网站 : https://www.npmjs.com/package/osmosis
27.超级爬行者:
- 语言 : Javascript
- Github 星 : 4341
- 支持
描述:
- Supercrawler 是一款Node.js网络爬虫。它被设计为高度可配置且易于使用。
- 当超级爬网工具成功抓取页面(可以是图像、文本文档或任何其他文件)时,它将触发您的自定义内容类型处理程序。定义您自己的自定义处理程序来解析页面、保存数据并执行所需的任何其他操作。
特征:
- 链接检测:超级爬虫将解析已抓取的 HTML 文档,识别链接并将它们添加到队列中。
- 机器人解析:超级爬虫会在抓取前请求robots.txt并检查规则。它还将识别任何站点地图。
- 站点地图解析:超级爬虫将从 XML 站点地图文件中读取链接,并将链接添加到队列中。
- 并发限制:超级爬虫限制任何时候发出的请求数。
- 速率限制:超级爬虫会在请求之间添加延迟,以避免轰炸服务器。
- 指数回退重试:超级爬虫将在 1 小时、2 小时、4 小时等后重试失败的请求。若要使用此功能,必须使用数据库支持或 Redis 支持的爬网队列。
- 主机名平衡 :超级爬虫将在不同的主机名之间公平地拆分请求。若要使用此功能,必须使用 Redis 支持的爬网队列。
– 文件 : https://github.com/brendonboshell/supercrawler
– 官方网站 : https://github.com/brendonboshell/supercrawler
28. 网页爬虫 Chrome 扩展:
- 语言 : Javascript
- Github 星 : 775
- 支持
描述:
- Web Scraper 是专为从网页中提取数据而构建的 chrome 浏览器扩展程序。
- 使用此扩展,您可以创建一个计划(站点地图),如何遍历网站以及应该提取什么。
- 使用这些站点地图,网络爬虫将相应地导航网站并提取所有数据。
- 以后抓取的数据可以导出为 CSV。
特征:
- 抓取多个页面
- 站点地图和抓取的数据存储在浏览器、本地存储或 CouchDB 中
- 多种数据选择类型
- 从动态页面中提取数据 (JavaScript+AJAX)
- 浏览抓取的数据
- 将抓取的数据导出为 CSV
- 导入、导出站点地图
- 仅取决于 Chrome 浏览器
– 文档 : https://www.webscraper.io/documentation
– 官方网站 : https://www.webscraper.io
29.无头镀铬履带:
- 语言 : Javascript
- Github 星 : 3256
- 支持
描述:
- 基于对 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光片:
- 语言 : Javascript
- Github 星 : 4464
- 支持
特征:
- 灵活架构:支持字符串、数组、对象数组和嵌套对象结构。架构与要抓取的页面的结构无关,因此您可以按照所选的结构提取数据。
- 可组合:API 是完全可组合的,让您在抓取每个页面的方式上具有极大的灵活性。
- 分页支持:在网站上分页,抓取每个页面。X-ray 还支持请求延迟和分页限制。抓取的页面可以流式传输到文件,因此,如果一个页面上出现错误,您不会丢失已抓取的内容。
- 爬虫支持:从一个页面开始,然后轻松移动到下一个页面。在对每个页面进行广度优先爬网之后,流程是可预测的。
- 负责任:X-ray 支持并发、限制、延迟、超时和限制,以帮助您负责任地抓取任何页面。
- 可插拔驱动程序:根据您的需要更换不同的刮板。
– 文件 : https://github.com/matthewmueller/x-ray
– 官方网站 : https://www.npmjs.com/package/x-ray-scraper
C 语言中的开源 Web 爬虫:
31. Httrack:
- 语言 : C
- Github 星 : 747
- 支持
描述:
- HTTrack 是一个免费(GPL、自由/自由软件)且易于使用的离线浏览器实用程序。
- 它允许您将万维网站点从 Internet 下载到本地目录,以递归方式构建所有目录,将 HTML、图像和其他文件从服务器获取到您的计算机。
- HTTrack 排列原始站点的相对链接结构。只需在浏览器中打开“镜像”网站的页面,您就可以从一个链接浏览另一个链接,就像您在线查看它一样。
- HTTrack 还可以更新现有的镜像站点,并恢复中断的下载。
- HTTrack 是完全可配置的,并具有集成的帮助系统。
特征:
- 多语言 Windows 和 Linux/Unix 界面
- 将一个站点或多个站点镜像在一起
- 按文件类型、链接位置、结构深度、文件大小、网站大小、接受或拒绝的网站或文件名进行筛选
- 代理支持可最大限度地提高速度,并提供可选身份验证
– 文件 : http://www.httrack.com/html/index.html
– 官方网站 : http://www.httrack.com/
32. GNU Wget :
- 语言 : C
- Github 星 : 22
- 支持
描述:
- GNU Wget 是一个免费软件包,用于使用 HTTP、HTTPS、FTP 和 FTPS 检索文件,这是最广泛使用的 Internet 协议。
- 它是一个非交互式的命令行工具,因此可以很容易地从脚本、cron 作业、没有 X-Windows 支持的终端等调用它。
特征:
- 可以使用 REST 和 RANGE 恢复中止的下载
- 基于 NLS 的消息文件,适用于多种不同语言
- 在大多数类 UNIX 操作系统以及 Microsoft Windows 上运行
- 支持 HTTP 代理
- 支持 HTTP Cookie
– 文档 : https://www.gnu.org/software/wget/manual/
– 官方网站 : https://www.gnu.org/software/wget/
C++ 中的开源网络爬虫:
33. 开源搜索引擎:
- 语言 : C++
- Github 星 : 912
- 支持
描述:
- 开源 Web 和企业搜索引擎以及蜘蛛/爬虫
- Gigablast 是美国为数不多的拥有超过 10 亿页的可搜索索引的搜索引擎之一。
特征:
- 大型
- 高性能
- 实时信息检索技术
– 文件 : http://www.gigablast.com/api.html
– 官方网站 : http://www.gigablast.com/
C# 中的开源 Web 爬虫:
34. Arachnode.Net:
- 语言 : C#
- Github 星 : 9
- 支持
描述:
- Arachnode.net 是为那些正在寻找开源网络爬虫的人准备的,是 C#。Arachnode.net 是一个类库,它从 Internet 下载内容,索引这些内容并提供自定义过程的方法。
- 您可以使用该工具进行个人内容聚合,也可以使用该工具将下载的内容提取、收集和解析为多种表单。发现的内容将编制索引并存储在 Lucene.NET 索引中。
- Arachnode.net 是一个很好的软件解决方案,用于文本挖掘目的以及学习高级爬虫技术。
特征:
- 可配置的规则和操作
- Lucene.NET 集成
- SQL Server 和全文索引
- .DOC/.PDF/.PPT/.XLS 索引
- HTML 转 XML 和 XHTML
- 完整的 JavaScript/AJAX 功能
- 多线程和限制
- 尊重爬行
- 分析服务
– 文件 : https://documentation.arachnode.net/index.html
– 官方网站 : http://arachnode.net/
35. 阿博特:
- 语言 : C#
- Github 星 : 1392
- 支持
描述:
- Abot 是一个开源的 C# 网络爬虫,专为速度和灵活性而构建。
- 它负责低级管道(多线程、http 请求、调度、链接解析等)。
- 您只需注册事件即可处理页面数据。
- 您还可以插入自己的核心接口实现,以完全控制爬网过程。
特征:
- 速度很快!!
- 易于定制(可插拔架构允许您决定抓取的内容和方式)
- 经过大量单元测试(高代码覆盖率)
- 非常轻巧(没有过度设计)
- 没有进程外依赖项(数据库、已安装的服务等)
– 文档 : https://github.com/sjdirect/abot
– 官方网站 : https://github.com/sjdirect/abot
36.鹰:
- 语言 : C#
- Github 星 : 1875
- 支持
描述:
- HAWK 不需要编程、可见的图形数据采集和清理工具,根据 GPL 协议开源。
特征:
- 无需编程即可对 Web 内容进行智能分析
- 所见即所得,可视化拖放,转换过滤等快速数据处理
- 可以从各种数据库和文件导入和导出
- 可以保存和重用任务
- 最合适的领域是爬行动物和数据清理,但它的力量远不止于此。
– 文档 : https://github.com/ferventdesert/Hawk
– 官方网站 : https://ferventdesert.github.io/Hawk/
37. 摩天大楼:
- 语言 : C#
- Github 星 : 39
- 支持
描述:
- 使用异步/await 和 Reactive Extensions 的异步网络爬虫/网络爬虫
– 文档 : https://github.com/JonCanning/SkyScraper
– 官方网站 : https://github.com/JonCanning/SkyScraper
.NET 中的开源 Web 爬虫:
38. DotnetSpider :
- 语言 : .NET
- Github 星 : 1382
- 支持
描述:
- DotnetSpider,一个类似于 WebMagic 和 Scrapy 的 .NET Standard Web 爬网库。它是一个轻量级、高效、快速的高级网络爬虫和抓取框架,适用于.NET
– 文档 : https://github.com/dotnetcore/DotnetSpider/wiki
– 官方网站 : https://github.com/dotnetcore/DotnetSpider
PHP中的开源网络爬虫:
39. 古特:
- 语言 : PHP
- Github 星 : 6574
- 支持
描述:
- Goutte 是一个用于 PHP 的屏幕抓取和网络爬虫库。
- Goutte 提供了一个很好的 API 来抓取网站并从 HTML/XML 响应中提取数据。
– 文档 : https://goutte.readthedocs.io/en/latest/
– 官方网站 : https://github.com/FriendsOfPHP/Goutte
40. Dom-Crawler:
- 语言 : PHP
- Github 星 : 1340
- 支持
描述:
- DomCrawler 组件简化了 HTML 和 XML 文档的 DOM 导航
– 文件 : https://symfony.com/doc/current/components/dom_crawler.html
– 官方网站 : https://github.com/symfony/dom-crawler
41. 蜘蛛:
- 语言 : PHP
- Github 星 : 249
- 支持
描述:
- 这是一个并行爬虫(爬虫)框架,最近使用纯 PHP 代码开发,基于 hightmanhttpclient 组件。
– 文档 : https://github.com/hightman/pspider
– 官方网站 : https://github.com/hightman/pspider
42. Php蜘蛛:
- 语言 : PHP
- Github 星 : 1023
- 支持
描述:
- 可配置且可扩展的 PHP 网络蜘蛛
特征:
- 支持爬网深度限制、队列大小限制和最大下载限制
- 支持添加基于 XPath、CSS 选择器或普通旧 PHP 的自定义 URI 发现逻辑
- 附带一组有用的 URI 筛选器,例如域限制
- 收集有关爬网的统计信息以进行报告
– 文档 : https://github.com/mvdbos/php-spider
– 官方网站 : https://github.com/mvdbos/php-spider
43. Spatie / 履带:
- 语言 : PHP
- Github 星 : 740
- 支持
描述:
- 此包提供了一个类来对网站上的链接进行爬网。
- 在引擎盖下,Guzzle promise 用于同时抓取多个 url。
- 由于爬网程序可以执行 JavaScript,因此可以对 JavaScript 呈现的网站进行爬网。在引擎盖下,Chrome 和 Puppeteer 用于支持此功能。
– 文档 : https://github.com/spatie/crawler
– 官方网站 : https://github.com/spatie/crawler
Ruby 中的开源 Web 爬虫:
44. 机械化:
- 语言 : Ruby
- Github 星 : 3728
- 支持
描述:
- Mechanize 库用于自动与网站交互。
- Mechanize 自动存储和发送 cookie,跟踪重定向,并可以跟踪链接和提交表单。可以填充和提交表单字段。
- 机械化还会将您访问过的站点作为历史记录进行跟踪。
– 文档 : http://docs.seattlerb.org/mechanize/
– 官方网站 : https://github.com/sparklemotion/mechanize
GO 中的开源 Web 爬虫:
45. 科利:
- 语言 : Go
- Github 星 : 5439
- 支持
描述:
- 闪电般快速且优雅的 Gophers 抓取框架
- Colly 提供了一个干净的界面来编写任何类型的爬虫/抓取工具/蜘蛛。
- 借助 Colly,您可以轻松地从网站中提取结构化数据,这些数据可用于广泛的应用程序,例如数据挖掘、数据处理或存档。
特征:
- 清洁 API
- 快速(单核上 >1k 请求/秒)
- 管理每个域的请求延迟和最大并发数
- 自动 Cookie 和会话处理
- 同步/异步/并行抓取
- 缓存
- 非 unicode 响应的自动编码
- Robots.txt支持
- 分布式抓取
- 通过环境变量进行配置
- 扩展
– 文件 : http://go-colly.org/docs/
– 官方网站 : http://go-colly.org/
46. 戈帕:
- 语言 : Go
- Github 星 : 169
- 支持
特征:
- 重量轻,占用空间小,内存要求应< 100MB
- 易于部署,无需运行时或依赖关系
- 易于使用,无需编程或脚本功能,开箱即用的功能
– 文件 : https://github.com/infinitbyte/gopa
– 官方网站 : https://github.com/infinitbyte/gopa
47. Pholcus :
- 语言 : Go
- Github 星 : 4341
- 支持
描述:
- Pholcus 是一款纯高并发、重量级的爬虫软件,是用纯 Go 语言编写的。
- 它针对 Internet 数据收集,并提供了一个功能,只需为具有基本 Go 或 JS 编程基础的用户注意规则自定义。
- 规则简单灵活,批处理任务并发,输出方式丰富(mysql/mongodb/kafka/csv/excel等)。
- 有大量的 Demo 分享;此外,它还支持水平和垂直两种爬行模式,支持模拟登录和任务暂停和取消等一系列高级功能。
特征:
- 一个强大的爬行动物工具。
- 它支持三种操作模式:单机、服务器和客户端。
- 它有三个操作界面:Web、GUI 和命令行。
– 文档 : https://pholcus.gitbooks.io/docs/
– 官方网站 : https://github.com/henrylee2cn/pholcus
R 中的开源 Web 爬虫:
48. Rvest :
- 语言 : R
- Github 星 : 969
- 支持
描述:
- RVEST 可帮助您从网页中抓取信息。它旨在与 magrittr 配合使用,使其能够轻松表达常见的网络抓取任务,其灵感来自美汤等库。
– 文档 : https://cran.r-project.org/web/packages/rvest/rvest.pdf
– 官方网站 : https://github.com/hadley/rvest
斯卡拉 :
49. 烟花:
- 语言 : Scala
- Github 星 : 198
- 支持
描述:
- 网络爬虫是一种机器人程序,它从网络获取资源以构建搜索引擎、知识库等应用程序。
- Sparkler(Spark-Crawler 的缩写)是一种新的 Web 爬虫,它通过整合各种 Apache 项目(如 Spark、Kafka、Lucene/Solr、Tika 和 pf4j)来利用分布式计算和信息检索领域的最新进展。
特征:
- 提供更高的性能和容错能力
- 支持复杂和近乎实时的分析
- 实时流出内容
- 可扩展插件框架
- 通用解析器
– 文档 : http://irds.usc.edu/sparkler/dev/development-environment-setup.html#contributing-source
– 官方网站 : http://irds.usc.edu/sparkler/
Perl 中的开源 Web 爬虫:
50. 网络爬虫:
- 语言 : Perl
- Github 星 : 91
- 支持
描述:
- Web Scraper 是使用 HTML 和 CSS 选择器或 XPath 表达式的 Web 抓取工具包
– 文档 : https://github.com/miyagawa/web-scraper
– 官方网站 : https://github.com/miyagawa/web-scraper
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/notes/313374.html