【问题标题】:Nutch - regex to include only urls which end in a numeric sequenceNutch - 正则表达式仅包含以数字序列结尾的 url
【发布时间】:2015-08-11 15:57:32
【问题描述】:

在 nutch 1.9 中,我正在尝试使用 regex-urlfilter.txt 来限制对http://eprints.ulster.ac.uk 的学术研究存储库的抓取,以仅返回实际文章的 url,这些文章以数字序列结尾,例如:

http://eprints.ulster.ac.uk/143/ http://eprints.ulster.ac.uk/24122/

排除诸如http://eprints.ulster.ac.uk/viewhttp://eprints.ulster.ac.uk/cgi/latest/之类的url

我尝试了各种类似的组合:

-^http://eprints.ulster.ac.uk/[a-z]*/(*)/(*)
+^http://eprints.ulster.ac.uk/[0-9]{1,}/

但似乎没有任何效果,爬网总是不返回任何结果。

任何帮助将不胜感激

【问题讨论】:

  • 试试:....([0-9]+(/)?)$
  • 谢谢@JorgeCampos 排除网址的行呢,还是我应该只担心包含行?
  • 对不起@KoreMike 我不是 nutch 方面的专家,我知道正则表达式,这就是为什么我对以数字结尾的行发表评论。如果您想要一条不以数字结尾的行,我会考虑使用负前瞻,例如 ....((?![0-9]+)(/)?)$

标签: regex web-crawler nutch


【解决方案1】:

您的排除项的正确正则表达式应该是这样的:

-^http://eprints.ulster.ac.uk(/[a-z]+)+/?
  • [a-z]+: a-z 出现一次或多次
  • (...)+:括号中的部分出现一次或多次
  • /?:末尾可选斜杠

编辑:

我查看了您链接的网站。它的结构是这样的:

1. http://eprints.ulster.ac.uk
    |
    V
2. http://eprints.ulster.ac.uk/view/
    |
    V
3. http://eprints.ulster.ac.uk/view/year/
    |
    V
4. http://eprints.ulster.ac.uk/view/year/2015.html
    |
    V
5. http://eprints.ulster.ac.uk/31307/

所以 1. 是您的起点,5. 是您想要的文件。如果爬虫必须找到列表中的最后一个文件,它还必须获取文件 2.、3. 和 4。

我的猜测是,这正是你的问题。您想排除文件 2. 和 3.,但爬虫需要它们。因此,您不能将它们排除在获取之外。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-15
  • 1970-01-01
  • 2016-01-10
  • 1970-01-01
  • 2017-11-08
  • 1970-01-01
相关资源
最近更新 更多