我正在尝试访问网页中的相对链接([href])并将其替换为绝对链接,并在控制台上打印修改后的网页HTML.但是,当我在运行程序后查看链接时,没有进行任何更改.这是我的代码:
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);
Run Code Online (Sandbox Code Playgroud)
一个非常奇怪的事情是,在这个程序中,我正在连接到http://jsoup.org/cookbook/extracting-data/dom-navigation但是当我连接到这个链接时http://csb.stanford.edu/ class/public/pages/sykes_webdesign/05_simple.html我注意到正在进行更改.那么这可能是什么问题,我的代码或网页有问题?!
请尝试<your element>.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
}
Run Code Online (Sandbox Code Playgroud)