Jsoup,http错误416,解析HTML

时间:2015-07-04 01:04:56

标签: 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 Auto-generated catch block
        e.printStackTrace();
    }

我的状态为416 org.jsoup.HttpStatusException: HTTP error fetching URL.

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

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

1 个答案:

答案 0 :(得分:0)

好的,当您要求的数据多于可用数据时,会出现Http 416错误,此类请求在语法上有效但不可满足。例如,如果您要请求1K bytes的文件且服务器上的实际文件小于请求的大小,则服务器将发出416错误,如果您请求的字节数少于服务器内容的实际大小而不是您将收到http状态206(部分内容)的回复。

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

解决方案:在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();
        }