嗨,我对 Jsoup 有疑问。
我刮了一个页面,得到了很多网址。其中一些是相对网址,例如:"../index.php"
, "../admin"
, "../details.php"
.
我attr("abs:href")
用来获取绝对网址,但这个链接呈现为www.domain.com/../admin.php
我想知道这是否是一个错误。
有没有办法用jsoup获得真正的绝对路径?我该如何解决这个问题?
我也尝试过absurl("href")
,但没有工作。
还有一个不错的选择是使用 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
如果element
包含相对链接,您将获得如下绝对链接:element.absUrl("href")
.
但是您必须在之前为您的相对链接设置基本 URI(例如setBaseUri("http://www.myexample.com")
在您的Document
or上调用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 来说太长了!