首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式来过滤具有多个符号和"&“的URL

正则表达式来过滤具有多个符号和"&“的URL
EN

Stack Overflow用户
提问于 2014-06-02 19:28:45
回答 3查看 658关注 0票数 0

我正在使用一个网络爬虫(称为Nutch),当我把一堆urls输入到它中时,它会爬行网络。我设置了某些正则表达式过滤器来控制爬虫到特定的域和特定的过滤器。

代码语言:javascript
复制
# 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]+)

crawler :在特定的域中,我的爬虫正在用我不想要的所有分页和查询参数爬行所有搜索表单urls。例子如下:

代码语言:javascript
复制
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是个好主意吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-02 19:32:30

您在Nutch配置中的行应该是

代码语言:javascript
复制
-&.*&

这告诉Nutch跳过两个或多个&字符的任何内容,以及任意数量之间的字符。

忽略这些URL是否是个好主意,取决于搜索引擎的用途,以及您正在搜索的域中URL的性质。如果不了解问题域,就不可能回答问题的最后一句。

票数 3
EN

Stack Overflow用户

发布于 2014-06-02 19:32:18

在字符串锚头^后面插入这种负前瞻

代码语言:javascript
复制
(?![^&]*&){2}

解释Regex

代码语言:javascript
复制
(?!                      # look ahead to see if there is not (2
                         # times):
  [^&]*                  #   any character except: '&' (0 or more
                         #   times (matching the most amount
                         #   possible))
  &                      #   '&'
){2}                     # end of look-ahead
票数 3
EN

Stack Overflow用户

发布于 2014-06-02 19:31:39

因为您似乎在匹配符合每种情况的URL,然后通过这些URL进行过滤,所以匹配包含2 &s的URL相当简单。

代码语言:javascript
复制
(&.*&)+

,它将匹配包含至少2个符号的序列的任何内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24001821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档