从HTML/Text中提取URL,但如果URL只显示部分,如"/secondpage.html"

Extract URL from HTML/Text but if URL only shows partial like "/secondpage.html"?

本文关键字:URL quot html 显示部 secondpage 如果 Text HTML 提取      更新时间:2023-09-26

我试图从字符串格式的HTML片段中提取URL。

我一直在使用regex检索href="answers"之间的部分。然而,我注意到在某些情况下,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)。

对于这个"部分URL"问题有什么好的解决方案吗?如果根丢失,最好只是检查并追加到URL,或者更建议使用外部库,如JSoup ?

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

  1. 协议://FQDN/文档
  2. /文档/
  3. 文档/

第一种情况指向绝对文档,第二种情况指向绝对文档,但省略了协议和FQDN,第三种情况指向相对文档。

对于第二种和第三种情况,您需要知道提交的信息,以便构建完整的URL。假设您知道原始HTML片段代码的URL,这里的问题是检测每个href所面临的可能性。如果您不知道原始URL,您就处于信息匮乏的状态,这意味着您无法完成HREF。