Scrapy TypeError:“Request”对象不是iterab

2024-09-26 18:14:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图遍历从传递给scrapy请求的回调返回的URL的列表,但得到以下错误:

TypeError: 'Request' object is not iterable

下面的工作。我可以看到所有提取的网址淹没在终端上:

^{pr2}$

但是如果我将yield samplePacks行替换为:

    def parse(self, resp):
        for genre in self.genres(resp):
            samplePacks = scrapy.Request(genre['url'], callback=self.extractSamplePackURLs)
            for pack in samplePacks:
                yield pack

。。。我得到了上面我发布的错误。在

为什么会这样?我如何循环回调的返回值?在


Tags: inselfurl列表forobjectrequest错误
1条回答
网友
1楼 · 发布于 2024-09-26 18:14:16

scrapy.Spider回调中生成Request对象只告诉Scrapy framework对HTTP请求进行排队。它生成HTTP请求对象,仅此而已。它不会立即下载它们。或者把控制权还给他们,直到他们被下载,也就是说,在收益率之后,你仍然没有结果。Request对象不是承诺、期货、延期。Scrapy的设计不同于各种异步框架。在

这些Request对象最终将由框架的下载程序处理,来自每个HTTP请求的响应体将被传递到相关的回调。 这是Scrapy异步编程模式的基础。在

如果您想做一些更“过程化”的事情,其中yield request(...)在下一次您拥有控制权时获得HTTP响应,那么您可以查看一下https://github.com/rmax/scrapy-inline-requests/。在

相关问题 更多 >

    热门问题