我用httpclient爬取页面,我有设置爬取频率,最长时间是休息10分钟,但是爬取的过程中有出现几个小时的停顿,然后继续运行,我用的是httpclient4.3.1版本,有设置setSocketTimeout(2000),.setConnectTimeout(2000),不知道是什么原因出现这么长时间的停顿,望各位高手能够指点一下,这是我设置频率的代码
if(count==0){//第一个页面
//System.out.println("set first time");
setFirstTime();
}else{
long timeDiffer=getTimeDiffer();//两次连接的实际间隔时间
Random randomCount=new Random();
int intervalTime=(randomCount.nextInt(4)+1)*1000;//任意1-5秒之间请求间隔,希望的请求间隔
if(timeDiffer<intervalTime){//如果两次链接时间差小于希望的请求间隔
long sleepTime=intervalTime-timeDiffer;
try{
System.out.println("休息"+sleepTime);
Thread.sleep(sleepTime);//休息一下爬取下一个Url
//System.out.println("sleep"+sleepTime+" over");
}catch(InterruptedException e){
e.printStackTrace();
}
}
}
//System.out.println(getTimeDiffer());
//设置爬取1000页后休息10分钟
if(count%1000==0&&count>0){
try{
Thread.sleep(600000);//600000是10分钟
}catch(InterruptedException e){
e.printStackTrace();
}
}
6 个解决方案
httpclient抓取网页内容需要时间很长 视网络情况而定。
没玩过爬虫,单看着楼主问题和大家回复,学习了。