在 Scrapy 中一次生成多个项目

我怎样才能同时产生多个项目?我正在抓取一个 URL 列表,其中每个 URL 都有大约 10-20 个嵌套 URL。我从每个嵌套的 URL 中抓取 10 条我需要提供的信息。有没有办法同时产出 10 件物品?也许通过列表或我附加每个项目的东西然后在最后全部产生它们?我不完全确定该怎么做。有什么建议么?


代码示例:


class OdSpider(scrapy.Spider):

    name = 'od'

    allowed_domains = []

    start_urls = ["url1, url2, . . . . ."]


    def parse(self, response):

        # scrape nested urls

        yield scrapy.Request(nested_url, callback=self.parsenestedgame)


    def parsenestedgame(self, response):

        i1 = item1()

        i2 = item2()

        # 9 other items then adding info to items

        yield item1(**i1)

        yield item2(**i2)

        # how can I yield all of these items at the same time?


梦里花落0921
浏览 145回答 2
2回答

当年话下

鉴于评论中提供的信息:您可以拥有任意数量的项目,并在填充每个项目时以任何顺序生成它们。由于该yield语句不会终止代码执行,它们甚至可以像您在示例代码中显示的那样相互跟随。它们都将到达 ItemPipelines,如果需要,您可以在那里区分并区别对待它们。如果那不能回答您的问题,我可能还没有完全理解。请解释您想要实现的目标以及您尝试过但没有奏效的内容,以便我提供更多帮助。

弑天下

我实际上想通了,我只是将所有项目附加到一个列表中,例如:item_list.append(item1(**i1)). . . 。ETC然后我迭代了以下项目:for item in item_list:     yield item
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python