从HTML /文本中提取网址,但如果网址仅显示部分内容,例如" /secondpage.html&#34 ;?

时间:2015-10-03 23:43:31

标签: javascript html regex web-services web

我尝试以字符串格式从HTML代码段中提取网址。

我一直在使用正则表达式来检索href ="之间的部分。和"。但是,我注意到在某些情况下,href链接到网站中的页面而不包含根URL。例如,代码段可以是:

<div class="textcontent" id="desc">
<br>
<a rel="nofollow" href="/confirm/url/aHR0cHLy9yYZy50bw%3D%3D/"  class="ajaxLink">link</a><br>

而不是更常见的:

<a href="google.com">Google</a>

我可以使用此正则表达式来缩小搜索范围:

/href\n*=\n*".*?"/

我环顾了StackOverflow,看了几篇关于这个的帖子(从html / text中提取URL),并看到提到使用像 JSoup这样的外部库。这是针对Chrome扩展程序的,所以我希望保持它的轻量级(如果这可能是一个问题)。 (JSoup是一个Java库而不是JS)。

这是否有任何好的解决方案&#34;部分网址&#34;问题?如果缺少root,是否最好只检查并附加到URL,或者更多建议使用像JSoup这样的外部库?

1 个答案:

答案 0 :(得分:1)

按照您使用正则表达式所采用的方向,最好的方法是解析提取的URL,以便检测以下三种URL可能性之一:

  1. 协议:// FQDN /文档
  2. / DOCUMENT /
  3. DOCUMENT /
  4. 第一种情况指向绝对文档,第二种情况指向绝对文档但省略协议和FQDN,第三种情况指向相关文档。

    对于第二种和第三种情况,您需要知道已省略的信息才能构建完整的URL。假设您知道原始HTML代码段的URL,这里的问题是检测您为每个href面临的可能性。如果您不知道原始URL,则表示您无法完成HREF。