我不明白请求是如何工作的。我不知道为什么 scrapy.Request(next_page, callback=self.parse2) 不像我想的那样管用。Pitem是对这个请求的回应,但我 KeyError: 'pitem' 我不知道为什么第一个 request 有效,但是 request2 不
scrapy.Request(next_page, callback=self.parse2)
KeyError: 'pitem'
request
request2
我的代码:
蜘蛛py
... def parse(self, response): ... request = scrapy.Request(link, callback=self.parse2) request.meta['item'] = item yield request ... def parse2(self, response) item = response.meta['item'] pitem = response.meta['pitem'] ... pitem['field'].append(self.whatever) if next_page is not None: request2 = scrapy.Request(next_page, callback=self.parse2) request2.meta['pitem'] = item yield request2 else: yield pitem self.whatever = []
request = scrapy.Request(link, callback=self.parse2) request.meta['item'] = item yield request
这确实定义了一个名为 item 但不是和 pitem .所以当你调用函数 parse2 然后说 pitem = response.meta['pitem'] 它找不到 皮特姆 在请求元数据中。
item
pitem
parse2
pitem = response.meta['pitem']
皮特姆
一个可能的解决方案可能是使用 pitem = response.meta.get('pitem') 这将返回一个 None 如果找不到,则返回值 皮特姆 但这在很大程度上取决于你的用例。
pitem = response.meta.get('pitem')
None