爬虫框架优缺点对比——为什么要学习Scrapy?
Scrapy 是一个爬虫框架,可以帮助简化网络爬虫开发,用最少的代码实现爬虫项目,并具有完整的爬虫功能。
1。爬虫简介
网络爬虫是一段具有特殊含义的代码。它的工作是在浏览器中模拟用户操作,发送HTTP请求,接收数据,然后分析并保存数据,以方便其他应用程序使用和分析。
此过程包括许多自动化操作。如果使用得当,可以产生巨大的经济价值,并有助于减少复杂的工作。
每天有无数的爬虫在互联网上漫游,从相关网站获取数据。这些爬行动物就像人类一样,有善有恶,有正有恶。 百度蜘蛛等搜索机器人为您提供最新数据搜索信息。感谢百度蜘蛛每天孜孜不倦的工作,我们可以通过搜索关键词找到合适的网站。爬虫还需要携带正确的网站地址,更新正确的信息数据。许多网站很乐意被百度机器人抓取以捕获最新数据。
但是恶意爬虫也很多。 长时间、大量检索特定网站数据,对网站服务器造成巨大压力,影响正常用户请求。这就是为什么很多网站讨厌爬虫并积极设置爬虫的原因。反爬行策略的原因。
对于个人开发者来说,学习爬虫技术对于个人发展有很大的好处:
- 及时锻炼个人技能,体验技术带来的好处:使用简单的几行Python代码就可以得到基于你的网站数据,学习曲线比使用C/C++进行爬虫开发要好很多。这也是很多人选择Python来开发爬虫的原因;
- 有时能给工作和生活带来很大的好处:比如收集资料、准备毕业论文;例如,开发12306购票助手,解决在家买票的困难;或者记录股票交易数据,帮助我们分析股票走势等。事实上,很多人已经做了这项工作,并且开源在Github上。
爬虫的应用有很多是事实,这里就不一一讲解了。接下来我们将介绍Python的爬虫框架以及使用爬虫框架进行开发的好处。
2。比较不同爬虫框架的优缺点
下面是一些在开源社区中受到广泛关注的 Python 爬虫框架。所谓高关注度包括Github上的点赞数和文档的丰富程度。
2.1 Scrapy
Scrapy框架可能是最流行的Python爬虫框架了,从Github的点赞数可以看出:38k!仅从这个数字就可以看出这是一个非常流行的框架。
Scrapy github
Scrapy 官方文档对该框架的描述如下:
Scrapy 是一个用于爬取网站并提取结构化数据的应用程序框架,可用于各种有用的应用程序。数据挖掘、信息处理或历史归档。
简单翻译:
Scrapy是一个专为网站数据抓取和结构化数据提取而设计的应用框架。不过,它也可以作为通用的网络爬虫框架来开发爬虫项目。 基于流行的异步处理框架Twisted,因此功能强大。开发者只需要定制开发几个模块就可以轻松实现一个功能强大的爬虫来爬取网页内容,非常方便。我总结了Scrapy框架的诸多优点如下:
- Scrapy 是异步的,可以灵活调整并行度;
- 使用可读性更强的Xpath,快速解析网页;
- 具有统一的中间件过滤器;
- 支持Shell模式,方便独立调试;
- 通过管道存储在数据库中,灵活方便,可以多种形式保存。
当然,Scrapy 框架也有很多缺点,最明显的有以下几点:
- 本身无法实现分布式爬虫;
- 去重效果较弱,消耗内存,无法维护;
- 无法获取需要运行js检索数据的网站;
- 基于twisted框架,其他任务在执行错误时不会停止,这使得Scrapy很难检测到数据映射过程中发生的错误。
这些基于 Scrapy 的缺点催生了许多框架插件来解决它们。比如scrapy-redis解决了Scrapy框架的分布式映射问题; scrapy-splash插件可以抓取js动态显示内容等。后期我们也会基于这些插件开发一个完整的分布式爬虫项目,来体验爬虫的神奇。
2.2 Pyspider
pyspider是一个用中文编写的高效网络机器人系统。 可以在浏览器界面上编写脚本、调度函数并实时查看爬取结果,后端使用常用的数据库来存储爬取结果,还可以定期设置任务和优先级。其特点大致如下:
- 拥有高效的Web界面,支持脚本编辑、任务监控、项目管理和结果查看;
- 数据后端支持MySQL、MongoDB、Reids、SQLite、Elasticsearch、PostgreSQL等主流关系型和非关系型数据库;
- 消息队列支持RabbitMQ、Redis等;
- 支持任务优先级、定时、错误重试等调度方案;
- 支持分布式架构,锚定js页面。
Pyspider 也有明显的问题: 丰富的文档和成熟的社区,这些都是 pyspider 所缺少的,这也是 Pyspider 不如 Scrapy 受欢迎的重要原因之一。不过,Pyspider 在简单性和易用性方面比 Scrapy 更好。许多初学者也会喜欢它提供的网站。这也是这个框架受欢迎的原因之一。
2.3 Cola
Cola是一个分布式爬虫框架。对于用户来说,只需要编写几个具体的函数即可,无需关注分布式操作的细节。任务自动分配在多台机器之间,整个过程对用户是透明的。
不过从Github用户的关注度来看,与上述两个框架相比还是有很多不同之处。整个项目只有两个主要贡献者,最后一次发布是在 2015 年。这些充分证明了可乐框架正在逐渐没落。不建议在生产环境中使用。其可能存在的Bug以及相关的安全风险无法及时更新和修复,但可以作为学习爬虫框架的参考。资料相当不错,通过深入研究这样一个框架的源代码,你可以获得很多知识。
3。为什么要学习Scrapy?
Scrapy是一个强大的爬虫框架。基于Scrapy,我们可以快速开发高性能的爬虫。另外,由于Scrapy框架的高扩展性,我们可以很容易地修改框架来满足我们的业务需求。例如,Scrapy-Redis插件仅用几千行代码就实现了Scrapy框架的分布式功能。
熟练掌握Scrapy框架可以带来以下好处:
- 可以在Scrapy框架上快速开发高性能爬虫,无需担心爬虫性能问题;
- 丰富的Scrapy文档,良好的社区和庞大的客户。这些都是我们选择Scrapy框架的原因;
- 掌握Scrapy框架后,可以深入研究Scrapy框架源码,了解整个爬虫框架的组成; Scrapy 擅长架构设计和编码风格。作为初学者,我们可以从中受益匪浅,尤其是在使用Twisted框架方面;
- 高度可定制。这是Scrapy框架的一大优势。通过简单的修改Scrapy,我们就可以实现一个具有特殊功能的爬虫。例如,Scrapy-Redis插件只需要几千行代码就可以将Scrapy框架扩展为分布式版本。即插即用,不需要修改 Scrapy 源代码。
看到这些功能后,你还有什么理由不学习Scrapy框架呢? ? ;
本课程假设您已经了解或了解以上基础知识,后面不会介绍一些简单的知识。说明问题,重点分析这个框架并掌握。
5。总结
本节简单介绍了爬虫的知识以及流行的Python爬虫框架,重点介绍流行的Python框架Scrapy,这也是我们接下来学习的重点。然后介绍了学习Scrapy框架所需的一些基础知识。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。