怎么解决jsoup不能完整获取响应内容的问题


当使用jsoup做爬虫类的应用时,很是方便。

但如果遇到不能完整获取响应内容时,一般有以下几个原因。

1. 网络异常,造成读取不全。这个很少发生,因为jsoup会报告exception

2. 网络超时,此时可以设置 connection.timeout(n) 增加超时时间。

3. 一切看起来都正常,也没有异常发生。 但是获取的数据就是少了一截。


这里主要将第三点。

仔细分析获取到的数据,发现得到数据都是1024k。

如果获取到的数据不超过1024k,程序正常,得到的数据也正常。

一旦数据超过1024k时,数据就只有预期得到数据的前1024k字节了。

仔细查找jsoup的api 发现,默认设置下,jsoup最大获取的响应长度正好时1M。

所以这个时候只要设置 connection.maxBodySize(0),设置为0,就可以得到不限响应长度的数据了。

完整代码就是

Document = Jsoup.connect(url)
    .header("Accept-Encoding", "gzip, deflate")
    .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0")
    .maxBodySize(0)
    .timeout(600000)
    .get();




你可能感兴趣的:(Java)