【问题标题】:How to extract absolute URL from relative HTML links using Jsoup?如何使用 Jsoup 从相对 HTML 链接中提取绝对 URL?
【发布时间】:2010-11-10 12:38:11
【问题描述】:

我正在使用Jsoup 来提取网页的 URL。这些 URL 的 href 属性是相对的,例如:

<a href="/text">example</a>

这是我的尝试:

Document document = Jsoup.connect(url).get();
Elements results = document.select("div.results");
Elements dls = results.select("dl");
for (Element dl : dls) {
    String url = dl.select("a").attr("href");
}

这很好用,但如果我使用

String url = dl.select("a").attr("abs:href");

要获得像http://example.com/text 这样的绝对 URL,它不起作用。如何获取绝对 URL?

【问题讨论】:

  • 示例 html 在哪里?我们无法通过猜测来帮助您......

标签: java url jsoup


【解决方案1】:

你需要Element#absUrl()

String url = dl.select("a").absUrl("href");

你可以顺便缩短选择:

Document document = Jsoup.connect(url).get();
Elements links = document.select("div.results dl a");
for (Element link : links) {
    String url = link.absUrl("href");
}

【讨论】:

    【解决方案2】:

    String url = dl.select("a").absUrl("href");

    不正确,因为dl.select("a") 不会返回单个项目而是一个集合。 您需要通过索引获取元素

    例如:

    Elements elems = dl.select("a");
    Element a1 = elems.get(0); //0 is the index first element increasing to (elems.size()-1)
    now you can do
    a1.absUrl("href");
    

    如果您确定上述选择只会产生一个项目,或者您想要的项目将是第一个,您可以:

    String url = dl.select("a").get(0).absUrl("href"); 
    

    也一样

    String url = dl.select("a").first().absUrl("href");
    

    它不一定是第一个元素,你总是可以替换 0 String url = dl.select("a").get(0).absUrl("href"); 带有元素的索引。 或者使用只会产生一个元素的更具体的选择。

    【讨论】:

      猜你喜欢
      • 2015-01-13
      • 1970-01-01
      • 2015-07-19
      • 2011-06-19
      • 2015-12-04
      • 1970-01-01
      • 2019-07-15
      • 1970-01-01
      • 2014-12-27
      相关资源
      最近更新 更多