我尝试以字符串格式从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这样的外部库?
答案 0 :(得分:1)
按照您使用正则表达式所采用的方向,最好的方法是解析提取的URL,以便检测以下三种URL可能性之一:
第一种情况指向绝对文档,第二种情况指向绝对文档但省略协议和FQDN,第三种情况指向相关文档。
对于第二种和第三种情况,您需要知道已省略的信息才能构建完整的URL。假设您知道原始HTML代码段的URL,这里的问题是检测您为每个href面临的可能性。如果您不知道原始URL,则表示您无法完成HREF。