Python 请求相同的解析方法
我不明白请求是如何工作的。我不知道为什么Python 请求相同的解析方法,python,web-scraping,scrapy,Python,Web Scraping,Scrapy,我不明白请求是如何工作的。我不知道为什么scrapy.Request(下一页,callback=self.parse2)不能像我想的那样工作。Pitem是此请求的响应,但我有KeyError:'Pitem'我不知道为什么第一个请求有效,但request2无效 我的代码: spider.py 这确实定义了一个名为item的元变量,但没有定义名为pitem的元变量。因此,当您调用函数parse2并说pitem=response.meta['pitem']时,它无法在请求元数据中找到pitem 一种可
scrapy.Request(下一页,callback=self.parse2)
不能像我想的那样工作。Pitem是此请求的响应,但我有KeyError:'Pitem'
我不知道为什么第一个请求
有效,但request2
无效
我的代码:
spider.py
这确实定义了一个名为item
的元变量,但没有定义名为pitem
的元变量。因此,当您调用函数parse2
并说pitem=response.meta['pitem']
时,它无法在请求元数据中找到pitem
一种可能的解决方案是使用pitem=response.meta.get('pitem')
,如果无法找到pitem
,它将返回一个None
值,但这在很大程度上取决于您的用例
...
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