Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将相对路径转换为绝对路径在JSoup中不起作用_Java_Html_Jsoup - Fatal编程技术网

Java 将相对路径转换为绝对路径在JSoup中不起作用

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

我试图访问网页中的相对链接(a[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);
一件非常奇怪的事情是,在这个程序中,我正在连接到,但当我连接到这个链接时,我注意到正在进行更改。那么这里可能有什么问题,我的代码或网页有问题吗

请改为尝试
.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
}