scrapy框架的优缺点

scrapy框架简介:
Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便。
尽管Scrapy原本是设计用来屏幕抓取(更精确的说,是网络抓取),但它也可以用来访问API来提取数据。
scrapy架构图:
在这里插入图片描述
scrapy的各个模块:
在这里插入图片描述
crapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。
Scheduler(调度器): 它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。
Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理,
Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器),
Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方.
Downloader Middlewares(下载中间件):你可以当作是一个可以自定义扩展下载功能的组件。
Spider Middlewares(Spider中间件):你可以理解为是一个可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的Responses;和从Spider出去的Requests)

简单的Scrapy 爬虫只需要五步:
新建项目 :创建爬虫项目,命令:scrapy startproject xxxx
创建应用,命令:scrapy genspider spider名称 目标站点
明确字段 (编写items.py):明确你想要抓取的目标站点的字段
制作爬虫 (spiders/spider.py):编写爬虫开始爬取网页,解析网页内容
存储内容 (pipelines.py):设计管道存储爬取内容

scrapy框架评价:
scrapy框架,将网页采集的通用功能,集成到各个模块中,留出自己定义的部分,它将程序员从繁冗的流程式重复劳动中解放出来,简单的网页爬虫的重点,就集中在应对反爬,大规模爬取和高效稳定的爬取这几个方面。
优点:
1)scrapy 是异步的,可以灵活调节并发量
2)采取可读性更强的 xpath 代替正则,速度快
3)写 middleware,方便写一些统一的过滤器
4)同时在不同的 url 上爬行
5)支持 shell 方式,方便独立调试
6)通过管道的方式存入数据库,灵活,可保存为多种形式
缺点:
1)无法用它完成分布式爬取
2)自身去重效果差,消耗内存,且不能持久化
3)对于需要执行js才能获取数据的网页,爱莫能助
4)兼容了下载图片与视频,但是可用性比较差
5)自身扩展的log模块,不好用,经常需要自定义
6)基于 twisted 框架,运行中的 exception 是不会干掉 reactor(反应器),并且异步框架出错后 是不会停掉其他任务的,数据出错后难以察觉,预警系统简单的使用邮件,很不友好

scrapy抓取简单的网页很有效,但也有很多缺陷,功能并不能十分满足日常需要,所以有许多公司自行定制化开发爬虫框架,来完成对数据的采集,许多扩展件在github上也取得了不小的成绩。

scrapy的扩展件:
scrapy_redis解决分布式爬取:
在这里插入图片描述
在这里插入图片描述
scrapy_redis通过redis实现调度器的队列和指纹集合,完成分布式和去重。
scrapy_redis_bloomfilter,基于Redis的Bloomfilter去重,并将其扩展到Scrapy框架,实现持久化去重,上亿或十亿级别的去重功能。
scrapy-splash ,整合了javascript,可以在scrapy当中执行js,获取数据,解析。

待爬取的目标网页站点,千奇百怪,在实际项目中,为了快速方便的实现功能,需要灵活的使用框架,比如结合requests使用,修改源码,重新定义扩展,输出日志到可视化工具系统,自定义发送钉钉预警等。

八爪鱼是一款基于Python的网络爬虫框架,它提供了一系列方便易用的工具和接口,用于快速开发和部署爬虫程序。Python爬虫是指使用Python编写的用于自动化获取互联网上数据的程序。 八爪鱼的优点包括: 1. 简单易用:八爪鱼提供了简洁的API和丰富的文档,使得开发者可以快速上手并进行爬虫开发。 2. 高效稳定:八爪鱼底层使用了异步IO技术,能够高效地处理大量的网络求,并且具有较好的稳定性。 3. 多线程支持:八爪鱼支持多线程并发处理,可以同时执行多个任务,提高爬取效率。 4. 数据处理能力强:八爪鱼提供了丰富的数据处理工具和插件,可以方便地对爬取到的数据进行清洗、分析和存储。 Python爬虫的优点包括: 1. 简单易学:Python语言简洁易懂,上手门槛低,适合初学者入门。 2. 丰富的库和工具:Python拥有众多强大的第三方库和工具,如BeautifulSoup、Scrapy等,可以方便地进行网页解析和数据提取。 3. 广泛的应用领域:Python爬虫可以应用于各种场景,如数据采集、搜索引擎优化、舆情监控等。 4. 社区支持强大:Python拥有庞大的开发者社区,可以获取到丰富的教程、文档和解决方案。 八爪鱼和Python爬虫的缺点包括: 1. 学习成本较高:对于初学者来说,八爪鱼和Python爬虫的学习曲线可能较陡峭,需要一定的时间和精力去学习相关知识和技术。 2. 反爬虫机制:由于互联网上存在反爬虫机制,爬虫程序可能会受到限制或封禁,需要采取相应的策略来规避。 3. 数据质量不稳定:由于网页结构的变化或网络环境的不稳定性,爬取到的数据质量可能不稳定,需要进行数据清洗和处理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值