如何使用Jsoup解析相对URL?

10

嗨,我在使用Jsoup时遇到了问题。

我抓取了一个页面并获得了许多url。其中一些是相对路径,如:"../index.php""../admin""../details.php"

我使用attr("abs:href")来获取绝对url,但这些链接的渲染方式类似于www.domain.com/../admin.php

我想知道这是否是个bug。

有没有办法用jsoup获取真正的绝对路径?我该怎么解决这个问题?

我也尝试了absurl("href"),但没有起作用。


我不确定jSoup是什么,或者它与ColdFusion有什么关系。但是,如果你正在使用cfhttp,你可以添加resolveurls="true"cfhttp将为链接和srcs返回完整的绝对URL。 - Dan Short
这与PHP和ColdFusion有什么关系? - goat
这个问题通常与所有编程语言有关。Jsoup是一个用于解析HTML的Java库。 - Tropicalista
你能在这里发布一些更多使用jsoup的代码吗? - ollo
2个回答

19

9
如果element中包含相对链接,您可以通过以下方式获取绝对链接:element.absUrl("href")

但是,在此之前,您必须为相对链接设置基本URI(例如在您的DocumentElement上调用setBaseUri("http://www.myexample.com"))。

确保您的基本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太长了!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接