The scrapy documentation特别提到我应该使用下载中间件,如果我想在没有实际获取网页的情况下将响应传递给蜘蛛。但是,我找不到有关如何实现此功能的任何文档或示例。
我感兴趣的是只将url传递给请求回调,使用url(及其某些排列)填充项目file_urls
字段,并使用FilesPipeline处理实际下载。< / p>
如何在避免下载网页的同时编写将url传递给蜘蛛的下载中间件类?
答案 0 :(得分:1)
您可以在下载程序中间件的Response
方法中返回process_request()
个对象。为蜘蛛产生的每个请求调用此方法。
类似的东西:
class NoDownloadMiddleware(object):
def process_request(self, request, spider):
# only process marked requests
if not request.meta.get('only_download'):
return
# now make Response object however you wish
response = Response(request.url)
return response
并在你的蜘蛛中:
def parse(self, response):
yield Request(some_url, meta={'only_download':True})
并在settings.py
中激活中间件:
DOWNLOADER_MIDDLEWARES = {
'myproject.middlewares.NoDownloadMiddleware': 543,
}