用java实现全链接提取

用java实现全链接提取,java,Java,我的目标是在从链接读取href属性时始终获得相同的字符串(在我的例子中是URI)。例子: 假设一个html文件有很多链接,比如 a href=“index.html”>但基本域是 a href=“../index.html”>但基本域是 我如何才能得到所有的链接正确的意思是完整的链接,包括域名? 我如何在java中做到这一点? 输入是HTML,也就是说,从一堆HTML代码中提取正确的链接需要使用URL对象: URL=新URL(URL上下文、字符串规范) 下面是一个例子: 导入java.net。

我的目标是在从链接读取href属性时始终获得相同的字符串(在我的例子中是URI)。例子: 假设一个html文件有很多链接,比如
a href=“index.html”>
但基本域是
a href=“../index.html”>
但基本域是
我如何才能得到所有的链接正确的意思是完整的链接,包括域名?
我如何在java中做到这一点?
输入是HTML,也就是说,从一堆HTML代码中提取正确的链接需要使用URL对象:

URL=新URL(URL上下文、字符串规范)

下面是一个例子:

导入java.net。*

public class Test {
public static void main(String[] args) throws Exception {
   URL base = new URL("http://www.java.com/dit/index.html");   
   URL url = new URL(base, "../hello.html");

   System.out.println(base);
   System.out.println(url);
}
}
它将打印:

http://www.java.com/dit/index.html
http://www.java.com/hello.html
使用URL对象:

URL=新URL(URL上下文、字符串规范)

下面是一个例子:

导入java.net。*

public class Test {
public static void main(String[] args) throws Exception {
   URL base = new URL("http://www.java.com/dit/index.html");   
   URL url = new URL(base, "../hello.html");

   System.out.println(base);
   System.out.println(url);
}
}
它将打印:

http://www.java.com/dit/index.html
http://www.java.com/hello.html

您可以使用一个完整的HTML解析器来实现这一点,比如。这是一个完全符合你要求的程序

package com.stackoverflow.q3394298;

import java.net.URL;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

public class Test {
    
    public static void main(String... args) throws Exception {
        URL url = new URL("https://stackoverflow.com/questions/3394298/");
        Document document = Jsoup.connect(url).get();
        Element link = document.select("a.question-hyperlink").first();
        System.out.println(link.attr("href"));
        System.out.println(link.absUrl("href"));
    }
    
}
为当前问题的标题链接打印(正确)以下内容:

/questions/3394298/full-link-extraction-using-java https://stackoverflow.com/questions/3394298/full-link-extraction-using-java
您可以使用一个完整的HTML解析器来实现这一点,比如。这是一个完全符合你要求的程序

package com.stackoverflow.q3394298;

import java.net.URL;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

public class Test {
    
    public static void main(String... args) throws Exception {
        URL url = new URL("https://stackoverflow.com/questions/3394298/");
        Document document = Jsoup.connect(url).get();
        Element link = document.select("a.question-hyperlink").first();
        System.out.println(link.attr("href"));
        System.out.println(link.absUrl("href"));
    }
    
}
为当前问题的标题链接打印(正确)以下内容:

/questions/3394298/full-link-extraction-using-java https://stackoverflow.com/questions/3394298/full-link-extraction-using-java
你有权访问请求?你有权访问请求?它不会从URL中提取链接,因为对我来说,输入是HTML,也就是说,它需要从一堆HTML代码中提取正确的链接link@Alex马修,不对,你可以把这个答案和这个答案结合起来,做你想做的事。请你花点力气。我猜这两个问题是针对同一个问题的,它不会从URL中提取链接,因为对我来说,输入是HTML,也就是说,从一堆需要提取正确的HTML代码中link@Alex马修,不对,你可以把这个答案和这个答案结合起来,做你想做的事。请你花点力气。我猜这两个问题都是针对同一个问题的。你能给我一个完整的代码吗?我对JAVA不是很精通,你能帮我吗?好的,我把它编辑成SSCCE风格,这样你就可以复制粘贴运行它而不做任何更改(你只需要把Jsoup JAR文件放到类路径中)。它显示了一个错误“线程中的异常”“java.lang.NullPointerException at Test.main”我给出了站点并显示了上面的错误,您需要选择感兴趣的链接“基本上选择所有
。请看我的回答。你能给我一个完整的代码吗,我对JAVA不是很精通,请你帮忙吗?好的,我将它编辑成SSCCE风格,这样你就可以复制'n'粘贴'n'运行它而不做任何更改(你只需要在类路径中删除Jsoup JAR文件)。它显示了一个错误“线程中的异常”main。”“java.lang.NullPointerException at Test.main”我给出了站点并显示了上面的错误您需要选择感兴趣的链接。
“a.question-hyperlink”
基本上选择了所有
。请参阅我对这个问题的回答。