scrapy否认一定长度的单词

时间:2018-02-28 10:34:07

标签: python-2.7 scrapy

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

示例:

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字母短的任何内容

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

谢谢

更新

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

我知道我可以否认评论(这很容易)但是还有#34; https://example.com/a/all" ...使用相同的字母 a 但它之后的路径不同..

1 个答案:

答案 0 :(得分:3)

您的模式存在两个问题:

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

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

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