我正在尝试实现拒绝规则,我不想抓取一定长度的单词。
例:
https://example.com/a/comments
这是我的拒绝规则:
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但后面有不同的路径..
您的模式有两个问题:
[]
内; [\/a-zA-Z\/]
匹配一个字母或正斜杠。{0,2}
将匹配0次出现的模式,以及1或2,使您的模式与//
中的https://
匹配。你想要{1,2}
。此模式应按预期工作:r'/[a-zA-Z]{1,2}/'
(为简单起见,使用原始字符串)。
另外(这里不是问题),(a)
与a
相同,如果你想要一个元组,你应该使用(a,)
。