如何使用Jsoup解析相对URL?

时间:2012-08-20 16:43:30

标签: java url jsoup

嗨我有Jsoup的问题。

我刮了一页并获得了很多网址。其中一些是相对网址,例如:"../index.php""../admin""../details.php"

我使用attr("abs:href")获取绝对网址,但此链接的呈现方式与www.domain.com/../admin.php

相同

我想知道这是不是一个错误。

有没有办法通过jsoup获得真正的绝对路径?我怎么解决这个问题?

我也试过absurl("href"),但没有工作。

2 个答案:

答案 0 :(得分:13)

另一个好的选择是使用abs:href或abs:src属性:

String relHref = link.attr("href"); // == "/"
String absHref = link.attr("abs:href"); // "http://jsoup.org/"

这里也有描述: http://jsoup.org/cookbook/extracting-data/working-with-urls

答案 1 :(得分:9)

如果element包含相对链接,则会获得如下所示的绝对链接:element.absUrl("href")

但您必须之前设置相关链接的基本URI(在setBaseUri("http://www.myexample.com")Document上调用例如Element)。

让你的基础Uri足够长!

好:

element.setBaseUri("http://www.example.com/abc/");
element.attr("href", "../b/here");

返回: http://www.example.com/b/here

<强>为:

element.setBaseUri("http://www.example.com/abc/");
element.attr("href", "../../b/here");

返回: http://www.example.com/../b/here

- &GT;你的相对链接太长了你的基础uri!