代码之家  ›  专栏  ›  技术社区  ›  emanuel cristian Mocean

从子功能发出请求

  •  1
  • emanuel cristian Mocean  · 技术社区  · 7 年前

    如果我从一个子函数发出请求,则会出现以下错误:

    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 回复  |  直到 5 年前
        1
  •  4
  •   stranac    7 年前

    您的代码生成生成器,您希望生成来自该生成器的请求。
    最好的方法可能是使用 yield from :

    def parse(self):
        yield from self.subfunc(link)
    

    编辑:

    自从 收益来自 语法在python 3.3中是新的,在旧版本中,您必须循环生成器生成的值:

    def parse(self):
        for request in self.subfunc(link):
            yield request