Jsoup,http错误416,正在解析HTML

Jsoup,http错误416,正在解析HTML,html,parsing,jsoup,Html,Parsing,Jsoup,我不太了解jsoup或HTML解析。我正试图从whitepages.com获取信息 try { Document doc = Jsoup.connect("http://www.whitepages.com/phone/1-###-###-####").get(); numberinfo = doc.select(".phone-list-data"); } } catch (IOException e) { // TODO

我不太了解jsoup或HTML解析。我正试图从whitepages.com获取信息

try {
        Document doc = Jsoup.connect("http://www.whitepages.com/phone/1-###-###-####").get();
         numberinfo = doc.select(".phone-list-data");
     }

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
我正在获取
org.jsoup.HttpStatusException:HTTP错误获取URL。
状态为416

我做了一些研究,它显示了一些关于范围的信息,它是否与特定电话号码末尾的输入有关


有没有办法让jsoup解析信息像这样

好的,所以当您请求比可用数据更多的数据时会发生错误,这种请求在语法上是有效的,但不可满足。例如,如果您要请求一个1K字节的文件,并且服务器上的实际文件小于请求的大小,服务器将发出416错误,如果您请求的字节小于服务器内容的实际大小,则您将收到http状态206(部分内容)的响应

为什么会发生在你的案例中? 这可能是我的猜测,但我不确定,
Jsoup
正在向您的请求添加范围标头,请参阅Jsoup中的
Jsoup.connect(url).maxBodySize()
,它设置了要读取的最大字节数,并默认为1MB。在您的情况下,即使将其更改为
200字节
,也会发生相同的错误

解决方案:
Jsoup.connect(url)
方法之后添加
ignoreHttpErrors(true)
以忽略此类错误,例如:

        try {
            Document doc = Jsoup.connect("http://www.whitepages.com/phone/1-###-###-####").ignoreHttpErrors(true).get();
            Elements elements = doc.select(".phone-list-data");
            System.out.println(doc.html());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

好的,所以当您请求比可用数据更多的数据时,Http 416会发生错误,这样的请求在语法上是有效的,但不可满足。例如,如果您要请求一个1K字节的文件,并且服务器上的实际文件小于请求的大小,服务器将发出416错误,如果您请求的字节小于服务器内容的实际大小,则您将收到http状态206(部分内容)的响应

为什么会发生在你的案例中? 这可能是我的猜测,但我不确定,
Jsoup
正在向您的请求添加范围标头,请参阅Jsoup中的
Jsoup.connect(url).maxBodySize()
,它设置了要读取的最大字节数,并默认为1MB。在您的情况下,即使将其更改为
200字节
,也会发生相同的错误

解决方案:
Jsoup.connect(url)
方法之后添加
ignoreHttpErrors(true)
以忽略此类错误,例如:

        try {
            Document doc = Jsoup.connect("http://www.whitepages.com/phone/1-###-###-####").ignoreHttpErrors(true).get();
            Elements elements = doc.select(".phone-list-data");
            System.out.println(doc.html());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

你能给出一个示例url吗?你可以将##############更改为任何电话号码,480-307-7421,它很可能返回亚利桑那州的移动电话号码。你能给出一个示例url吗?你可以将####################更改为任何电话号码,480-307-7421很可能会返回亚利桑那州的一个tmobile电话号码。我想我得到了某种拒绝返回的访问权限。我正在获取HTML页面信息,但我无法看到任何特定的内容,比如直接在页面上查看源代码。我知道这是可以做到的,因为浏览器中的“Try jsoup online”非常适合它。我想我得到了某种访问拒绝返回。我正在获取HTML页面信息,但我无法看到任何特定的内容,比如直接在页面上查看源代码。我知道这是可以做到的,因为浏览器中的“TryJSoupOnline”非常适合它。