网络爬虫 是一种自动收集互联网上发布的文本、图像和视频等信息并将其存储在数据库中的程序。各种网络爬虫在大数据热潮中发挥着重要作用,使人们更容易抓取数据。
在各种网络爬虫中,有很多开源的网络爬虫框架。开源网络爬虫允许用户基于源代码或框架进行编程,并提供抓取辅助资源以方便数据提取。
文章目录
Scrapy PySpider MechanicalSoup Heritrix Web-Harvest Apache Nutch Jaunt StormCrawler Apify SDK Node-crawlerScrapy
语言:Python
目前我在使用的爬虫框架,基本能解决99%的互联网数据采集。
Scrapy 是 Python 最流行的开源网络爬虫框架。可以有效地从网站中提取数据,按照制定好的规则(数据处理原则)进行采集的竖处理,并将其保存为需要的格式(JSON、XML、CSV)。或者存储到对应的数据库(MySQL、MongoDB)。基于 Twisted 异步网络框架构建,可以更快地接受和处理请求。 可以创建一个 Scrapy 项目,高效灵活地创建大规模爬取和抓取。
特征:
项目搭建迅速,功能强大。 有详细的文档。 无需触及核心即可添加新功能。 拥有社区和大量资源。 可以在云环境中运行。PySpider
语言:Python
PySpider 是一个用 Python 编写的强大的网络爬虫框架。 具有易于使用的 Web UI 和分布式架构,其中包含调度程序、获取程序和处理器等组件,可以轻松跟踪多个爬网。 它支持各种数据库进行数据存储,例如 MongoDB 和 MySQL。
特征:
用户友好的界面。 RabbitMQ、Beanstalk、Redis 和 Kombu 消息队列。 分布式架构。MechanicalSoup
语言:Python
MechanicalSoup 用于自动与网站交互。 提供了基于 Python 的 Requests(用于 HTTP 会话)和 BeautifulSoup(用于文档导航)的类似 API。 可以自动保存和发送 cookie、跟踪重定向、跟踪链接和提交表单。 MechanicalSoup 在尝试模拟人类行为而不仅仅是抓取数据时非常有用。
特征:
模拟人类行为的能力。 快速抓取相当简单的网站。 支持 CSS 和 XPath 选择器。Heritrix
语言:JAVA
Heritrix是一个高度可扩展的、基于 Java 的开源网络爬虫,专为网络归档而设计。高度服从 robot.txt 排除指令和元机器人标签,并以不太可能破坏正常网站活动的可衡量和自适应速度收集数据。提供可通过网络浏览器访问的基于网络的用户界面,用于操作员控制和监控爬行。
特征:
可互换的可插拔模块。 基于网络的界面。 服从 robots.txt 和元机器人标签。 可扩展性强。Web-Harvest
语言:JAVA
Web-Harvest 是一个用 Java 编写的开源网络爬虫。 可以从指定页面收集数据。 主要利用 XSLT、XQuery 和正则表达式等技术和技术来操作或过滤基于 HTML/XML 的网站的内容。 可以很容易地与定制的 Java 库进行补充,以增强提取能力。
特征:
用于数据处理和控制流的强大文本和 XML 操作处理器。 用于存储和使用变量的变量上下文。 支持脚本语言,可以轻松集成到网络爬虫中。Apache Nutch
语言:JAVA
Apache Nutch 是一个用 Java 编写的开源网络爬虫框架。 它具有高度模块化的架构,允许开发人员创建用于媒体类型解析、数据采集、查询和集群的插件。 作为可插拔和模块化的 Nutch 还为自定义实现提供了可扩展的接口。
特征:
高度可扩展。 遵守 robot.txt 规则。 充满活力的社区和积极的发展。 可插拔解析、协议、存储和索引。Jaunt
语言:JAVA
Jaunt 基于 JAVA,专为网页抓取、网页自动化和 JSON 查询而设计。 它提供了一个快速、超轻的无头浏览器,提供 Web 抓取功能、对 DOM 的访问以及对每个 HTTP 请求/响应的控制,但不支持 JavaScript。
特征:
处理单个 HTTP 请求/响应。 易于与 REST API 连接。 支持 HTTP、HTTPS 和基本身份验证。 DOM 和 JSON 中的 RegEx 查询支持。StormCrawler
语言:JAVA
StormCrawler 是一个开源 SDK,用于使用 Apache Storm 构建分布式网络爬虫。 该项目在 Apache License v2 下,由一组主要用 Java 编写的可重用资源和组件组成。 当要获取和解析的 URL 以流的形式提供时,最好使用它,但它也是大型递归爬网的一个很好的解决方案,尤其是在需要低延迟的情况下。 .
特征:
高度可扩展,可用于大型递归爬网。 可以使用其他库轻松扩展。 更好的线程管理以减少抓取延迟。Apify SDK
语言:JavaScript
Apify SDK 是内置在 JavaScript 中的最好的网络爬虫之一。 可扩展的抓取库支持在无头 Chrome 和 Puppeteer 中开发数据提取和 Web 自动化作业。 RequestQueue 和 AutoscaledPool 等独特而强大的工具允许从多个 URL 开始并递归地跟踪到其他页面的链接,每个页面都以系统的最大容量执行抓取任务。
特征:
大规模高性能抓取。 有一个代理池来逃避检测。 支持 Cheerio 和 Puppeteer 等 Node.js 插件。Node-crawler
语言:JavaScript
Node-crawler 是一个强大且流行的基于 Node.js 的生产网络爬虫。 完全用 Node.js 编写并支持非阻塞 I/O,使其对爬虫管道操作机制非常有用。 同时支持快速DOM选择(无需编写正则表达式),提高爬虫开发效率。
特征:
速率控制。 URL 请求优先。 可配置的池大小和重试次数。 使用服务器端 DOM 和 Cheerio(默认)或 JSDOM 自动插入 jQuery。