如果我从子函数发出scrapy请求,我会收到此错误:
ERROR: Spider must return Request, BaseItem, dict or None, got 'generator'
示例代码:
def parse(self):
yield self.subfunc(link)
def subfunc(self):
yield scrapy.Request(link)
我认为这与发电机的工作方式有关,但我并不熟悉它们。任何快速解决方案我想使用子函数来组织代码。我自己写信给csv
,所以我不需要提供项目或说明
您的代码生成了生成器,您希望从该生成器生成请求。
可能最好的方法是使用yield from
:
def parse(self):
yield from self.subfunc(link)
编辑:
由于yield from
语法在python 3.3中是新的,在旧版本中你必须循环生成器产生的值:
def parse(self):
for request in self.subfunc(link):
yield request