Java 将相对路径转换为绝对路径在JSoup中不起作用
我试图访问网页中的相对链接(a[href]),并将其替换为绝对链接,然后在控制台上打印修改后的网页HTML。但是,当我在运行程序后查看链接时,没有做任何更改。这是我的密码:Java 将相对路径转换为绝对路径在JSoup中不起作用,java,html,jsoup,Java,Html,Jsoup,我试图访问网页中的相对链接(a[href]),并将其替换为绝对链接,然后在控制台上打印修改后的网页HTML。但是,当我在运行程序后查看链接时,没有做任何更改。这是我的密码: Document doc = null; try { doc = Jsoup.connect("http://jsoup.org/cookbook/extracting-data/dom-navigation").userAgent("Mozilla").get(); } c
Document doc = null;
try {
doc = Jsoup.connect("http://jsoup.org/cookbook/extracting-data/dom-navigation").userAgent("Mozilla").get();
} catch (IOException e1) {
e1.printStackTrace();
}
Elements imports = doc.select("a[href]");
String s = "";
for (Element link : imports) {
//System.out.println("\n"+link.attr("href"));
//System.out.println(link.attr("abs:href"));
if(link.attr("href").equalsIgnoreCase("/")){
//Do nothing for now
}
else{
s = doc.toString().replaceAll(link.attr("href"), link.attr("abs:href"));
}
}
System.out.println(s);
一件非常奇怪的事情是,在这个程序中,我正在连接到,但当我连接到这个链接时,我注意到正在进行更改。那么这里可能有什么问题,我的代码或网页有问题吗 请改为尝试.absUrl(“href”)
。对于测试,更改后直接打印结果元素
要替换URL,您可以使用以下内容(未测试):
嘿,这个管用!事实上,我只是打印每个元素,看看是否单独进行了更改(是的,他们进行了更改),但在打印整个html文档时,没有进行任何更改,我需要的是整个修改后的html文档。真奇怪。无论如何,您提供的代码,特别是
urlement.attr(“href”,urlement.absUrl(“href”)代码>行,工作完美。谢谢你。这很奇怪,你似乎在复印一份文件,而不是在什么地方真正的文件。为了进行测试,您可以尝试替换这样的节点,而不是更改其值。
Elements urls = doc.select("a[href]");
for( Element urlElement : urls )
{
urlElement.attr("href", urlElement.absUrl("href"));
System.out.println(urlElement); // Print result directly after changes have been done
}