gpt4 book ai didi

好斗的。 Spider_close 调用后如何产生项目?

转载 作者:行者123 更新时间:2023-12-02 09:46:34 33 4
gpt4 key购买 nike

我只想在爬行完成时生成一个项目。我正在尝试通过

来做到这一点
def spider_closed(self, spider):
item = EtsyItem()
item['total_sales'] = 1111111
yield item

尽管调用了该函数,但它不会产生任何结果。抓取结束后如何生成元素?

最佳答案

根据您想要做什么,可能有一个非常糟糕的解决方案。

您可能需要考虑使用在 spider_close 之前触发的 spider_idle 信号,而不是 spider_close。空闲和关闭之间的一个区别是,spider_idle允许执行请求,然后可能包含回调或错误返回以生成所需的项目。

蜘蛛类内部:

@classmethod
def from_crawler(cls, crawler, *args, **kwargs):
# ...
crawler.signals.connect(spider.spider_idle, signal=signals.spider_idle)
return spider

# ...

def yield_item(self, response):
yield MyItem(name='myname')


def spider_idle(self, spider):
req = Request('https://fakewebsite123.xyz',
callback=lambda:None, errback=self.yield_item)
self.crawler.engine.crawl(req, spider)

但是这会带来一些副作用,因此我不鼓励任何人在生产中使用它,例如最终请求将引发 DNSLookupError。我只是想展示什么是可能的。

关于好斗的。 Spider_close 调用后如何产生项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51753307/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com