python | scrapy爬虫框架与selenium配合使用

1. scrapy框架

scrapy是基于twusted框架开发而来,twisted是一个流行的事件驱动难过的python网络框架,因此scrapy使用了一种非阻塞的代码来实现并发

scrapy的组成:
  1. 引擎engine:引擎负责控制系统所有组件之间的数据流,并在某些动作发生时触发事件。
  2. 调度器scheduler:是用来接收引擎发过来的请求,压入队列中,并在迎请再次请求的时候返回,可以想象成一个URL的优先级队列,由他来护额顶下一个抓取的网址是什么,同时去除重复的网址
  3. 下载器downloader:用于下载网页内容,并将网页内容返回给engine,下载器是简历在twisted这个高效的异步模型上的
  4. 爬虫spider:spider是开发人员自定义的类,用于解析responses,并且提取items,或者发送新的请求
  5. 项目管道item piplines:在items被提取后负责处理他们,主要包括清理、验证、持久化等操作。
  6. 下载器中间件Downloader Midd;ewares:位于scrapy引擎和下载器之间,主要用于处理从EGINE传到downloader的请求request,已经从downloader传到engine的响应response
  7. 爬虫中间件spider Middlewares:位于engine和spider之间,主要工作是处理spider的输入和输出

2. scrapy框架 + selenium的使用

使用场景:

在通过scrapy框架进行某些网站数据爬取的时候,往往会碰到页面动态数据加载的情况发生,如果直接使用scrapy对其url发请求,是绝对获取不到那部分动态加载出来的数据值。但是通过观察我们会发现,通过浏览器进行url请求发送则会加载出对应的动态加载出的数据。那么如果我们想要在scrapy也获取动态加载出的数据,则必须使用selenium创建浏览器对象,然后通过该浏览器对象进行请求发送,获取动态加载的数据值。

使用流程:

1.重写爬虫文件中的__init__()构造方法,在该方法中使用selenium实例化一个浏览器对象
2.重写哦啊冲文件的closed(self, spider)方法,在其内部关闭浏览器对象,该方法是在爬虫结束时被调用
3.重写下载中间件的process_response方法,让该方法对响应对象进行蓝家,并篡改response中存储的页面数据
4.在settings配置中开启下载中间件

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值