前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Scrapy框架自己的见解

Scrapy框架自己的见解

作者头像
andrew_a
发布2019-07-30 15:16:54
4490
发布2019-07-30 15:16:54
举报

对这个框架用的时间很长了,一般如果需要大量抓取的话,就需要用到这个框架,因为相对来说还是挺方便的。

只需要自己专心去解决反爬的问题以及网页解析。其他的包括保存到数据库,保存文件这些都是只需要配置好相应的配置文件即可。

今天就写一下,我自己学到的关于框架的知识。肯定会有遗漏或者描述不准确的地方,所以大家碰到了帮我指出来,留言或者私信都行。不过估计原理都不喜欢看。

上一篇有一张图片,我再贴一次:

  • Spiders(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器)
  • Engine(引擎):负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。
  • Scheduler(调度器):它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。
  • Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理
  • ItemPipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方.
  • Downloader Middlewares(下载中间件):你可以当作是一个可以自定义扩展下载功能的组件。
  • Spider Middlewares(Spider中间件):你可以理解为是一个可以自定扩展和操作引擎和Spider中间
  • 通信的功能组件(比如进入Spider的Responses;和从Spider出去的Requests)

Scrapy 使用了 Twisted['twɪstɪd](其主要对手是Tornado)异步网络框架来处理网络通讯,可以加快我们的下载速度,不用自己去实现异步框架,并且包含了各种中间件接口,可以灵活的完成各种需求。

scrapy的工作流程,我自己画的图:

1.首先Spiders(爬虫)将需要发送请求的url(requests)经ScrapyEngine(引擎)交给Scheduler(调度器)。

2.Scheduler(排序,入队)处理后,经ScrapyEngine,DownloaderMiddlewares(可选,主要有User_Agent, Proxy代理)交给Downloader。

3.Downloader向互联网发送请求,并接收下载响应(response)。将响应(response)经ScrapyEngine,SpiderMiddlewares(可选)交给Spiders。

4.Spiders处理response,提取数据并将数据经ScrapyEngine交给ItemPipeline保存(可以是本地,可以是数据库)。

5. 提取url重新经ScrapyEngine交给Scheduler进行下一个循环。直到无Url请求程序停止结束。

这就是基本的原理了,

URL ---> 会包装成requests ---> 引擎 ---> 调度器 --->将这个requests排序,入队列操作后 ---> 引擎 ---> 下载器 ---> 请求网页获取response---> 爬虫spiders(解析响应的数据) ---> 管道(保存数据)

---> 新的URL新的requests(继续循环,直到没有URL)

这个如果是图的话,是比较清楚的。不过上面已经好多图了,就不画图了。这个就是整个的scrapy的工作流程,包括他里面的一些简单的部分的原理。

其实就是给大家说明了一下这个框架是怎么工作的。

当然还有更多没说的部分,包括配置去重,以及如何增量爬取。如何增加代理池,增加UA池,增加cookie池,增加日志模块等。这些都是需要去考虑的,这样下来才是一个完整的框架。

这个就先说这么多吧,字太多不好。

精彩推荐

破解美团加密参数_token(

爬取酷狗音乐TOP500

爬取抖音热门音乐

爬取英雄联盟所有英雄的皮肤

爬取王者荣耀英雄高清皮肤

哔哩哔哩滑动验证码破解

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python爬虫scrapy 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档