我对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解析这样的信息?
答案 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();
}