从子功能发出scrapy请求

问题描述 投票:0回答:1

如果我从子函数发出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,所以我不需要提供项目或说明

python scrapy generator
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.