网络爬虫是一种自动化程序或脚本,根据设定的数据爬取索引系统地爬取 Web 网页。整个过程称为 Web 数据采集(Crawling)或爬取(Spidering)。
人们通常将用于爬取的工具称为爬虫(Web Spider)、Web 数据抽取软件或 Web 网站采集工具。
当前 Web 爬取应用广受关注,一个重要的原因在于它们从多个方面上推进了业务的加速增长。这些应用非常便于在数据驱动的大环境中使用。它们从多个公开的网站采集信息和内容,并按统一可管理的方式提供。在这些应用的帮助下,我们可以一窥遍布全球的海量信息,例如新闻、社会媒体、图片、文章,甚至是竞争对手的情况。
为更好地采用各种爬取应用,我们需要做好调研,了解各种应用的不同功能和相同特性。我们将在本文中介绍多种不同的开源 Web 爬取软件库和工具。本文有助于读者实现爬取、采集网站数据并分析数据。
- 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/
- 实现语言:Python
- GitHub 星标数:1274
- 官方支持链接:https://scrapy.org/community/
简介
- Cola 是一种高层分布式爬取框架,实现从网站爬取网页,并从中抽取结构化数据。
- 它提供了一种实现目标数据获取的简单且灵活的方式。
- 用户只需要编写其中一部分代码,就可在本地和分布式环境下运行。
特性
- 高层分布式爬取框架。
- 简单且高速。
- 灵活。
官方文档:https://github.com/chineking/cola
官方网站:https://pypi.org/project/Cola/
- 实现语言 Python
- GitHub 星标数: 144
- 官方支持链接:https://scrapy.org/community/
简介
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/
- 实现语言: Python
- GitHub 星标数: 2803
- 官方支持链接:https://scrapy.org/community/
简介
- MechanicalSoup 是一种设计模拟人类使用 Web 浏览器行为的 Python 软件库,它基于解析软件库 BeautifulSoup 构建。
- 如果开发人员需要从单个站点采集数据,或是不需要大量数据采集,那么使用 MechanicalSoup 是一种简单高效的方法。
- MechanicalSoup 自动存储和发送 Cookie、跟踪重定向、支持链接跟随和提交表单。
特性
- 轻量级。
- 支持 Cookie 处理器。
- 官方文档: https://mechanicalsoup.readthedocs.io/en/stable/
- 官方网站:https://mechanicalsoup.readthedocs.io/
- 实现语言: Python
- GitHub 星标数: 11803
- 官方支持链接:https://scrapy.org/community/
简介
- PySpider 是一种 Python 编写的强大 Web 爬虫。
- 它支持 JavaScript 网页,并具有分布式架构。
- PySpider 支持将爬取数据存储在用户选定的后台数据库,包括 MySQL, MongoDB, Redis, SQLite, Elasticsearch 等。
- 支持开发人员使用 RabbitMQ、Beanstalk 和 Redis 等作为消息队列。
特性
- 提供强大 Web 界面,具有脚本编辑器、任务监控、项目管理器和结果查看器。
- 支持对重度 Ajax 网站的爬取。
- 易于实现适用、快速的爬取。
- 官方文档: http://docs.pyspider.org/
- 官方网站:https://github.com/binux/pyspider
- 实现语言: Python
- GitHub 星标数: 6250
- 官方支持链接:https://scrapy.org/community/
简介
- 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
- 实现语言: Python
- 官方支持链接:https://scrapy.org/community/
简介
- Beautiful Soup 一种设计用于实现 Web 爬取等快速数据获取项目的 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/
-
实现语言: Python
-
GitHub 星标数: 152
-
官方支持链接:https://scrapy.org/community/
简介
-
Spidy 是一种从命令行运行的 Web 爬虫。易于使用。用户只需提供 Web 网页的 URL 链接,Spidy 就可以开始爬取!Spidy 无疑是一种整体爬取 Web 的简单有效的方式。
-
Spidy 使用 Python 请求查询 Web 页面,并使用 lxml 抽取页面中的所有链接。非常简单!
特性
- 错误处理。
- 跨平台兼容性。
- 频繁时间戳日志。
- 可移植性。
- 用户友好的日志。
- 保存 Web 页面。
- 支持文件压缩。
- 官方文档:https://github.com/rivermont/spidy
- 官方网站: http://project.crawley-cloud.com/
- 实现语言: Python
- GitHub 星标数: 1627
- 官方支持链接:https://scrapy.org/community/
简介
- 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
最后如果有对Python爬虫感兴趣的朋友,我这里整理了一些资料放在CSDN官方上了,有需要的朋友可以扫描下方二维码即可获取。
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!