我正在使用一个网络爬虫(称为Nutch),当我向其中输入一堆网址时,它会抓取网络。我设置了某些正则表达式过滤器来控制爬虫到特定的域和特定的过滤器。
# skip URLs containing a back slash
-[\\]
# skip URLS containing more than 6 levels
-^http://([a-zA-Z.-]+)/(?:[^/]+/){6,}.*$
# crawl only domain abc
+^http://www.abc.xx.yyy.zzz/pubs/([a-z]+)
问题:在特定域内,我的抓取工具正在抓取所有搜索表单网址,其中包含我不想要的所有分页和查询参数。例子有:
http://www.abc.xx.yyy.zzz/pubs/biblio_results.asp?Library=ABC&SubjectScope=keyword&SubjectMode=contains&SubjectText=abc_archive&URLs=yes&Order=year&SortOrder=DESC&Abstracts=no
我不知道如何设置正则表达式来让我的抓取工具忽略任何此类 URL,如上面的示例,其 URL 路径中包含多个“&”符号。
顺便说一句,在构建搜索引擎时忽略此类 URL 是个好主意吗?
最佳答案
您在 Nutch 配置中的行应该是
-&.*&
这告诉 Nutch 跳过任何包含两个或多个 &
字符以及其间任意数量字符的内容。
忽略此类网址是否是个好主意,取决于搜索引擎的目的以及您正在搜索的域中网址的性质。如果不了解问题领域,就不可能回答问题的最后一句。
关于java - 正则表达式过滤具有多个&符号 "&"的URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24001821/