在构造Request时,增加flags这个参数,该参数会被转换为列表类型,查看源码的转换
self.flags = [] if flags is None else list(flags)
yield scrapy.Request(
url=url,
meta={'id': id},
dont_filter=True,
flags=[1],
callback=self.parse_isdel,
)
在request中埋入flag,在经过中间件时,可以以此为判断依据,针对性处理每条Request
比如在下载中间件给对应的request设置代理,因为有些网站会对某一层的页面进行IP访问限制。
def process_request(self, request, spider):
if request.flags:
if request.flags[1] == 1:
request.meta['proxy'] = 'http://123.52.41.165:808'
你可能会报出以下错误
2018-09-20 14:07:54 [scrapy.core.engine] ERROR: Error while obtaining sta