写一个下载器中间件需要重写:
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方法,如果没有指定这个方法,那么会抛出一个异常。
评论列表
已有0条评论