最近自己在写一爬虫,用到了httpclient4.2.X ,如果开启过多的线程去抓取数据,有时候会出现返回数据不完全的情况。请问大家有没有什么好的解决方案?
请求超时
httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 60000);
读取超时
httpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 60000);
根据你的情况,应该只需要设置读取超时就行了,另外,java端访问页面,部分子页面的站点可能本身延时就比较长,还有ajax的访问是不会被执行的,所以ajax动态生成的页面元素就不会有了
返回数据不完全的是哪些网站?检查几个,是否响应时间过长,把httpclient的超时时间设置一下
那你就慢点!
对,超时时间设置长一些。
抓取不全? 是不是目标页面有ajax请求。
这个和你的网络环境有关吧 我原来也遇到这样的情况,比content-length为78k,结果只下载了50多k