scrapy否认一定长度的单词

问题描述 投票:0回答:1

我正在尝试实现拒绝规则,我不想抓取一定长度的单词。

例:

https://example.com/a/comments

https://example.com/z/blog

https://example.com/t/public

这是我的拒绝规则:

rules = [Rule(LinkExtractor(deny=('[\/a-zA-Z\/]{0,2}')),
                  callback="parse_page",
                  follow=True)]

我想否认* / *之间1-2字母短的任何内容。

使用此命令,它基本上只是立即结束爬行而没有错误。

谢谢

UPDATE

如果斜杠之间有1或2个字母(例如字母a:“https://example/a / comments”),我不想抓它。

我知道我可以拒绝评论(这很容易),但也有“https://example.com/a/all”...使用相同的字母a但后面有不同的路径..

python-2.7 scrapy
1个回答
3
投票

您的模式有两个问题:

  • 你的斜杠在[]内; [\/a-zA-Z\/]匹配一个字母或正斜杠。
  • {0,2}将匹配0次出现的模式,以及1或2,使您的模式与//中的https://匹配。你想要{1,2}

此模式应按预期工作:r'/[a-zA-Z]{1,2}/'(为简单起见,使用原始字符串)。

另外(这里不是问题),(a)a相同,如果你想要一个元组,你应该使用(a,)

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.