如果我从子功能发出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
所以我不需要提供项目或词汇
答案 0 :(得分:1)
您的代码生成了生成器,您希望从该生成器生成请求
可能最好的方法是使用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