当前位置: 移动技术网 > IT编程>脚本编程>Python > Scrapy框架使用的基本知识

Scrapy框架使用的基本知识

2018年11月08日  | 移动技术网IT编程  | 我要评论

恩施铁路,迈克尔杰克逊好听的歌曲,杨林果

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

总结

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网