10

嗨,我对 Jsoup 有疑问。

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

attr("abs:href")用来获取绝对网址,但这个链接呈现为www.domain.com/../admin.php

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

有没有办法用jsoup获得真正的绝对路径?我该如何解决这个问题?

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

4

2 回答 2

19

还有一个不错的选择是使用 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

于 2013-01-07T23:35:58.160 回答
9

如果element包含相对链接,您将获得如下绝对链接:element.absUrl("href").

但是您必须在之前为您的相对链接设置基本 URI(例如setBaseUri("http://www.myexample.com")在您的Documentor上调用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

--> 你的相对链接对于你的基础 uri 来说太长了!

于 2012-09-03T23:21:03.757 回答