【问题标题】:JSOUP extracting absolute url from html [duplicate]JSOUP从html中提取绝对网址[重复]
【发布时间】:2015-07-19 23:50:48
【问题描述】:

我一直在查看 jsoup 页面,但我所能做的就是从 url 中提取标题等...但我需要来自确切 div 的完整绝对 url 地址。我想把它存放在某个地方,以后再用。

<div class="link-block container">
                <a href="/what-to-do/11636002" rel="nofollow" 
                        title="unique abilities" class="just-link">
                </a>
</div>

正如我所说,我尝试了String absHref = link.attr("abs:href"),但它给了我代码中的“标题”部分。我做错了什么?请给我一些建议。

【问题讨论】:

  • 向我们展示您的代码实现。
  • 要从其中的某些部分获取绝对 URL,您需要使用正则表达式 stackoverflow.com/questions/29326901/…
  • 我找到了很简单的方法: URL baseUrl = new URL("my base url"); URL url = 新 URL(baseUrl, "/what-to-do/11636002");它工作正常,因为我最后有一个绝对链接。现在告诉我如何使用例如 jsoup 提取“/what-to-do/11636002”部分??
  • 如果某个答案对您有用,那么您应该接受它。否则,如果您后来找到了更好的解决方案,您可以回答自己的问题并接受。

标签: java android url jsoup href


【解决方案1】:

你可以这样做:

String myHtml = "<div class=\"link-block container\">\n"
                + "  <a href=\"/what-to-do/11636002\" rel=\"nofollow\" title=\"unique abilities\" class=\"just-link\">\n"
                + "  </a>\n"
                + "</div>";

Document doc = Jsoup.parseBodyFragment(myHtml, "http://your.baseurl");
Element e = doc.select("a").first();

System.out.println(e.attr("abs:href"));

打印:

http://your.baseurl/what-to-do/11636002

如果你想获取所有相似的a元素,请这样做:

Elements elements = doc.select("a[href*=/what-to-do/");
for (Element e: elements) {
   System.out.println(e.attr("abs:href"));
}

这将为您提供所有a 和包含“/what-to-do/”的href

【讨论】:

  • 问题是我不知道如何将这部分准确地放入我的变量中(例如 myHtml)。那是我的问题。
  • @edinson 你想从哪里得到它?如果您将 myHtml 作为字符串,那么您应该像我的回答一样对其进行解析。如果它来自 URL,请使用 Jsoup.connect(yourUrl).get(); 还是您的意思是别的?我不太清楚。
  • 我有一个完整的 HTML 站点。我需要从整个站点的代码中提取“/what-to-do/11636002”部分。所以它不是代码中唯一的一个url。
  • @edinson,只需从您想要的页面中选择所有a 元素。我已经更新了我的答案。
猜你喜欢
  • 2011-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-17
  • 1970-01-01
  • 1970-01-01
  • 2017-01-16
相关资源
最近更新 更多