Scrapy框架使用的基本知识
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
。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接
推荐阅读
-
Scrapy框架使用的基本知识
-
请使用过PHP框架的过来说两句吧
-
Android视频播放之JiaoZiVideoPlayer框架的使用
-
详解在PHP的Yii框架中使用行为Behaviors的方法_PHP
-
PHP的Laravel框架结合MySQL与Redis数据库的使用部署,laravelredis_PHP教程
-
.NET框架-Try-Parse和Tester-Doer的使用区别
-
python中如何django使用haystack:全文检索的框架的实例讲解
-
学习SSM框架时,使用pagehelper插件时遇到的问题
-
ssm框架下的网上书城项目的开发-springboot下开发(使用jsp)
-
yii2框架中使用下拉菜单的自动搜索yii-widget-select2实例分析_PHP