Scrapy框架使用的基本知识


Posted in Python onOctober 21, 2018

scrapy是一个基于Twisted的异步处理框架,可扩展性很强。优点此处不再一一赘述。

下面介绍一些概念性知识,帮助大家理解scrapy。

一、数据流向

要想熟练掌握这个框架,一定要明白数据的流向是怎么一个过程。总结如下:

1.引擎先打开网站,请求url。

2.引擎通过调度器以Request形式调度url。

3.引擎请求下一个url。

4.调度器将url通过Downloader Middlewares发送给引擎

5.Downloader 生成response,通过Downloader Middlewares发送给引擎

6.引擎接收Response 通过spiderMiddleware发送给spider处理

7.spider处理response

8.引擎将spider处理的item给ItemPipeline 然后将新的Request给调度器。

二、各个结构的作用

DownloderMiddleware

调度器会从队列之中拿出Request发送给Downloader执行下载,这个过程会经过DownloaderMiddleware的处理。

作用的位置有两个:

  • 在调度器调出Request发送给Downloader之前。
  • 下载之后生成Response发送给spider之前。

核心方法有三个:

process_request(request,spider)

Request 到达Downloader之前,就会被调用

参数介绍:

  •          request :Request对象,被处理的Request。
  •          spider:spider对象,上面被处理的Request对应的spider。

返回值:

1.返回None 调用别的process_request()方法,直至将Request执行得到Response才会结束。

2.返回Response对象,低优先级的process_request()process_exception不调用。

3.返回request对象,低优先级的process_request()停止执行,返回新的Request

process_response(request,response,spider)

作用位置:

  • Downloader 执行Request之后,会得到对应的Reponse ,scrapy 引擎会将Response发送给spider进行解析,发送之前调用这个方法对Response进行处理。

返回值的情况:

1.返回Request低优先级的process_respons()不调用。

2.返回response低优先级的process_respons()继续调用。

process_exception(request,exception,spider)

此函数主要是用来处理异常的。

spiderMiddleware

作用位置:

  • Downloader生成Response之后会发送给spider,
  • 在发送之前,会经过spiderMiddleware处理。

核心方法:

process_soider_input(response,spider)

返回值:

1.返回None

 继续处理Response,调用所有的spiderMiddleware,知道spider处理

2.跑出异常

直接调用Request的errback()方法,使用process_spider_output()处理。

process_spider_output(response,result,spider)

当spider处理Response返回结果时,被调用。

process_spider_exception(response,exception,spider)

返回值:none

继续处理response,返回一个可迭代对象,process_spider_output()方法被调用。

process_start_request(start_requests,spider)

spider启动的Request为参数被调用,必须返回request

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Python 相关文章推荐
python list 合并连接字符串的方法
Mar 09 Python
Python中用于转换字母为小写的lower()方法使用简介
May 19 Python
在阿里云服务器上配置CentOS+Nginx+Python+Flask环境
Jun 18 Python
Django学习笔记之Class-Based-View
Feb 15 Python
老生常谈python函数参数的区别(必看篇)
May 29 Python
Python 循环终止语句的三种方法小结
Jun 24 Python
浅谈Python 敏感词过滤的实现
Aug 15 Python
将python安装信息加入注册表的示例
Nov 20 Python
Python pandas RFM模型应用实例详解
Nov 20 Python
基于python实现可视化生成二维码工具
Jul 08 Python
Visual Studio Code搭建django项目的方法步骤
Sep 17 Python
Python扫描端口的实现
Jan 25 Python
python去掉 unicode 字符串前面的u方法
Oct 21 #Python
python 分离文件名和路径以及分离文件名和后缀的方法
Oct 21 #Python
python之消除前缀重命名的方法
Oct 21 #Python
使用Scrapy爬取动态数据
Oct 21 #Python
python使用正则表达式来获取文件名的前缀方法
Oct 21 #Python
python遍历文件夹找出文件夹后缀为py的文件方法
Oct 21 #Python
python os.listdir按文件存取时间顺序列出目录的实例
Oct 21 #Python
You might like
[原创]php获取数组中键值最大数组项的索引值
2015/03/17 PHP
微信公众号开发之通过接口删除菜单
2017/02/20 PHP
javascript SocialHistory 检查访问者是否访问过某站点
2008/08/02 Javascript
JavaScript 利用StringBuffer类提升+=拼接字符串效率
2009/11/24 Javascript
JS简单实现登陆验证附效果图
2013/11/19 Javascript
jquery数组过滤筛选方法grep()简介
2014/06/06 Javascript
JavaScript的arguments对象应用示例
2014/09/15 Javascript
浅析JavaScript中的变量复制、参数传递和作用域链
2016/01/13 Javascript
不用一句js代码初始化组件
2016/01/27 Javascript
js+flash实现的5图变换效果广告代码(附演示与demo源码下载)
2016/04/01 Javascript
手动初始化Angular的模块与控制器
2016/12/26 Javascript
Bootstrap的popover(弹出框)在append后弹不出(失效)
2017/02/27 Javascript
Vue路由前后端设计总结
2019/08/06 Javascript
Vue过渡效果之CSS过渡详解(结合transition,animation,animate.css)
2020/02/05 Javascript
vue 自定指令生成uuid滚动监听达到tab表格吸顶效果的代码
2020/09/16 Javascript
[01:14:35]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第一局
2016/02/26 DOTA
跟老齐学Python之玩转字符串(2)
2014/09/14 Python
python实现逐个读取txt字符并修改
2018/12/24 Python
python批量识别图片指定区域文字内容
2019/04/30 Python
Python 经典算法100及解析(小结)
2019/09/13 Python
Python协程操作之gevent(yield阻塞,greenlet),协程实现多任务(有规律的交替协作执行)用法详解
2019/10/14 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
2020/02/07 Python
pytorch:model.train和model.eval用法及区别详解
2020/02/20 Python
详解Python流程控制语句
2020/10/28 Python
PyCharm2019.3永久激活破解详细图文教程,亲测可用(不定期更新)
2020/10/29 Python
用canvas显示验证码的实现
2020/04/10 HTML / CSS
缅甸网上购物:Shop.com.mm
2017/12/05 全球购物
最好的商品表达自己:Cafepress
2019/09/04 全球购物
工程造价管理专业大专生求职信
2013/10/06 职场文书
师范应届生教师求职信
2013/11/05 职场文书
2014年机关党委工作总结
2014/12/11 职场文书
就业导师推荐信范文
2015/03/27 职场文书
教师节简报
2015/07/20 职场文书
军训心得体会范文(2016最新篇)
2016/01/11 职场文书
Go 内联优化让程序员爱不释手
2022/06/21 Golang
css弧边选项卡的项目实践
2023/05/07 HTML / CSS