来自C++背景,试图从 Scrapy 框架了解回调在这个函数中做什么



我正在遵循基本的Scrapy教程,并且有一些有限的python经验。这似乎是一个递归函数,我对正在发生的事情有一些疑问。

这是在 Scrapy 教程中:https://doc.scrapy.org/en/latest/intro/tutorial.html

当我指定callback=self.parse和省略它时,这运行相同。

这是代码(最后一行是我的问题的来源):

def parse(self, response):
    for quote in response.css('div.quote'):
        yield {
            'text':     quote.css('span.text::text').extract_first(),
            'author':     quote.css('small.author::text').extract_first(),
            'tags': quote.css('div.tags a.tag::text').extract(),
        }
    next_page = response.css('li.next a::attr(href)').extract_first()
    if next_page is not None:
        next_page = response.urljoin(next_page)
        yield scrapy.Request(next_page, callback=self.parse)

当我省略callback=self.parse和将其保留时,该函数的执行方式相同。此回调是隐式的,不是必需的吗?有什么理由需要把它放在那里吗?

提前谢谢。

您链接的文档解释了 A start_requests方法的快捷方式部分中发生的情况:

parse()是 Scrapy 的默认回调方法,用于没有显式分配回调的请求

这个抓取教程只展示了基本方法,然后尝试让您轻松使用替代方案。

最新更新