我正在遵循基本的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 的默认回调方法,用于没有显式分配回调的请求
这个抓取教程只展示了基本方法,然后尝试让您轻松使用替代方案。