从子功能发出scrapy请求

时间:2018-01-05 22:13:10

标签: python scrapy generator

如果我从子功能发出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所以我不需要提供项目或词汇

1 个答案:

答案 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