作者:Prowebscraper 博客
译者:Rays
摘要: 说起爬虫框架,你可能会马上脱口而出:「 Scrapy 或者 Pyspider」,甚至你可能认为只有 Python 才能爬虫。其实还有很多好用的开源爬虫框架,也绝不仅仅只有 Python 才能写爬虫,大多数热门语言都可以做。
总之,开源 Web 爬虫纷繁多样,下面按照所用程语言,罗列五十种最好的开源爬虫框架,每一个各具特长,适用于不同场景和用户需求。下面来一睹为快。
Python 编写的开源 Web 爬虫
1. Scrapy
- 实现语言:Python
- GitHub Star 数:28660
- 官方支持链接
简介:
- 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
- 官方支持链接
简介:
- 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
- 官方支持链接
简介:
- 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/
8. Spidy 爬虫
- 实现语言: Python
- GitHub Star 数: 152
- 官方支持链接
简介:
- 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 爬虫,从只有五行代码的脚本,到可处理百万量级