gpt4 book ai didi

python - Scrapy 规则,allowed_domains 的回调,以及拒绝域的不同回调

转载 作者:行者123 更新时间:2023-11-28 22:11:53 26 4
gpt4 key购买 nike

在 Scrapy 中,我如何为允许的域和拒绝的域使用不同的回调函数。

我正在使用以下规则:

rules = [Rule(LinkExtractor(allow=(), deny_domains = allowed_domains), callback='parse_denied_item', follow=True),
Rule(LinkExtractor(allow_domains = allowed_domains), callback='parse_item', follow=True)]

基本上,只要有来自allowed_domain(或其中一个域的子域)的请求,我希望调用parse_item。然后,我希望为所有未被 allowed_domains 列入白名单的请求调用 parse_denied_item

我该怎么做?

最佳答案

我认为最好的方法是LinkExtractor 上使用allowed_domains,而是从response.url 中解析域 在您的 parse_* 方法中,并根据域执行不同的逻辑。

您可以保留单独的 parse_* 方法和分类方法,根据域调用 yield from self.parse_*(response) (Python 3)对应的parse_*方法:

rules = [Rule(LinkExtractor(), callback='parse_all', follow=True)]

def parse_all(self, response):
# [Get domain out of response.url]
if domain in allowed_domains:
yield from self.parse_item(response)
else:
yield from self.parse_denied_item(response)

关于python - Scrapy 规则,allowed_domains 的回调,以及拒绝域的不同回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55351994/

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