Scrapy的下载器中间件(Downloader Middlewares)

Scrapy框架 2019-01-06 1266

写一个下载器中间件需要重写:
process_request(self, request,spider)---这个方法是在请求发送前执行或者
process_response(self, request, spider)---这个方法是在数据下载到引擎前执行
1.process_request(self, request,spider):
可以在此方法中来设置随机代理与随机ip等
参数:
request:发送请求的request对象
spider:发送请求的spider对象
返回值:

如果返回None:scrapy将继续处理该request,执行其他中间件的相应方法,直到合适的下载器处理函数被调用  
返回Response对象:scrapy将不会调用任何其他的process_request方法,将直接返回这个response对象。已经激活的中间件的process_response()方法则会在每个response返回时被调用。就是下载器得到了响应数据,经过中间件返回给引擎进行处理。  
返回Request对象:不在使用之前的request对象去下载数据,而是根据现在返回的request对象返回数据。  
如果这个方法中抛出了异常,则会调用process_exception方法。

2.process_response方法
参数:
request:发送请求的request对象
response:被处理的response对象
spider:发送请求的spider对象
返回值:

返回Response对象:会将这个新的response对象传给其他中间件,最终传给爬虫。  
返回Request对象:下载器链被切断,返回request会重新被下载器调度下载  
如果抛出一个异常,那么调用request的errback方法,如果没有指定这个方法,那么会抛出一个异常。

 

标签:Scrapy框架

文章评论

评论列表

已有0条评论