java 流的方式抓取网页 但是显示不全_完美解决jsoup获取响应内容不完整

完美解决jsoup获取响应内容不完整

Jsoup抓取网页只能抓取一部分不能完整获取响应内容时,一般有以下几个原因。

1. 网络异常,这个很少发生,jsoup会报告exception

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

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

如果获取到的数据不超过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();

经过测试,这样还是不能解决。

最终发现,下面这样写才能完美解决:

Response  resp = Jsoup.connect(url)

.timeout(60000)

.method(Connection.Method.GET)

.maxBodySize(0)

.followRedirects(false)

.execute();

String htmlStr = new String(resp.bodyAsBytes());

无聊看看网原创,转载请注明出处!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值