我想使用其他方法而不是使用meta,因为meta目前用于处理我的Spider中的302响应。当我在此字典中添加额外的项目以同步数据时,将忽略302响应
def start_requests(self):
for url in urls:
self.rowExt = row
yield scrapy.Request(
url=url, callback=self.parse, dont_filter=True,
meta={
'dont_redirect': True,
'handle_httpstatus_list': [302],
}
)
如果我在此字典中添加任何其他项,则302响应处理将不起作用。
def start_requests(self):
for url in urls:
self.rowExt = row
yield scrapy.Request(
url=url, callback=self.parse, dont_filter=True,
meta={
'dont_redirect': True,
'handle_httpstatus_list': [302],
'Name': name,
'Price': price,
}
)
如果您使用的是Scrapy v1.7 +,则可以使用cb_kwargs,用法有些相似。
yield scrapy.Request(
url=url, callback=self.parse, dont_filter=True,
meta={
'dont_redirect': True,
'handle_httpstatus_list': [302],
},
cb_kwargs={
'name': name,
'price': price,
}
)
def parse(self, response, name, price):
....
请注意,传入的项目将cb_kwargs
作为关键字参数传递到回调函数中,因此您需要相应地调整函数签名。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句