我正在尝试实施拒绝规则,我不想抓取一定长度的单词。
示例:
https://example.com/a/comments
这是我的拒绝规则:
rules = [Rule(LinkExtractor(deny=('[\/a-zA-Z\/]{0,2}')),
callback="parse_page",
follow=True)]
我想否认* / *。
之间1-2字母短的任何内容使用此命令它基本上只是立即结束爬行而没有错误。
谢谢
更新
如果斜线之间有1或2个字母(例如字母 a :" https://example/ a / comments")我不想抓它。
我知道我可以否认评论(这很容易)但是还有#34; https://example.com/a/all" ...使用相同的字母 a 但它之后的路径不同..
答案 0 :(得分:3)
您的模式存在两个问题:
[]
内; [\/a-zA-Z\/]
匹配字母或正斜杠。{0,2}
将匹配0次出现的模式,以及1或2,使您的模式与//
中的https://
匹配。
您想要{1,2}
代替。此模式应按预期工作:r'/[a-zA-Z]{1,2}/'
(为简单起见,使用原始字符串)。
此外(这里不是问题),(a)
与a
相同,如果你想要一个元组,你应该使用(a,)
。