python scrapy否认规则

时间:2018-03-08 10:48:56

标签: python-2.7 scrapy

我想创建一个拒绝规则(动态)...拒绝在域前面的任何内容。

示例:

https://blog.example.com
https://video.example.com
https://jp.example.com
https://de.exp.com
...

等等。

我试过这样但是它没有像预期的那样工作:

domain = 'example.com'

rules = [Rule(LinkExtractor(deny=(r"[a-zA-z\.]("+ domain +")")),
                  callback="parse_page",
                  follow=True)]

基本上否认域名前面的任何内容......除了 https://

1 个答案:

答案 0 :(得分:1)

在你的情况下,我认为它应该如下工作:

rules = [Rule(LinkExtractor(deny='.*' + domain + '.*',
                  callback="parse_page",
                  follow=True)]

对于动态链接,您可以在tldextract函数内的response.url上使用parse。例如:

import tldextract

deny_regex = '.*' + tldextract.extract(url).domain + '.*'