Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.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从特定HTML页面检索内容_Java_Html Parsing_Jsoup - Fatal编程技术网

如何通过Java从特定HTML页面检索内容

如何通过Java从特定HTML页面检索内容,java,html-parsing,jsoup,Java,Html Parsing,Jsoup,我正在为任何网站解析html内容的应用程序中工作,但今天,我发现我的实现有一个例外。 我试图从这个url获取内容:我总是得到以下错误:java.io.IOException:服务器返回HTTP响应代码:403。我正在使用JSOUP库。我尝试了另外两个没有Jsoup选项的选项,但是没有成功。此页面可从浏览器访问,但不能从java访问。你能帮我提些建议吗 谢谢 Document doc; String url = "http://tomfishburne.com/2014/09/so

我正在为任何网站解析html内容的应用程序中工作,但今天,我发现我的实现有一个例外。 我试图从这个url获取内容:我总是得到以下错误:java.io.IOException:服务器返回HTTP响应代码:403。我正在使用JSOUP库。我尝试了另外两个没有Jsoup选项的选项,但是没有成功。此页面可从浏览器访问,但不能从java访问。你能帮我提些建议吗

谢谢

    Document doc;
    String url = "http://tomfishburne.com/2014/09/socialmedia.html";
    try {

        Response response = Jsoup
                .connect(url)
                .ignoreContentType(true)
                .userAgent(
                        "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0")
                .timeout(12000)
                .followRedirects(true).execute();
        doc = response.parse();
    } catch (Exception e) {
        try {
            doc = Jsoup.connect(url)
                    .userAgent(
                            "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0")
                    .get();
        } catch (IOException e1) {
            try {
                URL url2 = new URL(url);
                HttpURLConnection conn = (HttpURLConnection) url2
                        .openConnection();
                conn.setRequestProperty(
                        "User-Agent",
                        "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36");

                BufferedReader in;
                in = new BufferedReader(new InputStreamReader(
                        conn.getInputStream(), "UTF-8"));
            } catch (UnsupportedEncodingException e2) {
            } catch (IOException e2) {
                //This exception is always thrown because of 403 error code
            }

        }
    }

}
您可以做的是将ignoreHttpErrorstrue添加到调用中,例如:

Document document = Jsoup.connect(url)
    .userAgent('Mozilla/5.0 (X11; Linux x86_64; rv:32.0) Gecko/20100101 Firefox/32.0')
    .ignoreHttpErrors(true)
    .get()
事实证明,这个网站总是返回403禁止,即使你从网络浏览器访问它-你可以在Firebug中看到它的例子


我已经创建了一个正在运行的Groovy脚本,它工作得很好。

谢谢Szymom。我忘记了这个秘密方法:太好了,我很高兴能帮助你: