java网络爬虫连接超时解决[实战程序]
在网络爬虫中,经常会遇到如下报错。即连接超时。针对此问题,一般解决思路为:将连接时间、请求时间设置长一下。如果出现连接超时的情况,则在重新请求【设置重新请求次数】。
Exception in thread "main" java.net.ConnectException: Connection timed out: connect
下面的代码便是使用httpclient解决连接超时的样例程序。直接上程序。
package daili;import java.io.IOException;
import java.net.URI;
import org.apache.http.HttpRequest;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.params.CookiePolicy;
import org.apache.http.client.protocol.ClientContext;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.client.DefaultHttpRequestRetryHandler;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.cookie.BasicClientCookie2;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.ExecutionContext;
import org.apache.http.protocol.HttpContext;
import org.apache.http.util.EntityUtils;
/** author:合肥工业大学 管院学院 钱洋 *1563178220@qq.com
*/
public class Test1 {public static void main(String[] args) throws ClientProtocolException, IOException, InterruptedException {getRawHTML("http://club.autohome.com.cn/bbs/forum-c-2098-1.html#pvareaid=103447");}public static String getRawHTML ( String url ) throws ClientProtocolException, IOException, InterruptedException{//初始化DefaultHttpClient httpclient = new DefaultHttpClient();httpclient.getParams().setParameter("http.protocol.cookie-policy", CookiePolicy.BROWSER_COMPATIBILITY);//设置参数HttpParams params = httpclient.getParams(); //连接时间HttpConnectionParams.setConnectionTimeout(params, 6000); HttpConnectionParams.setSoTimeout(params, 6000*20); //超时重新请求次数DefaultHttpRequestRetryHandler dhr = new DefaultHttpRequestRetryHandler(5,true); HttpContext localContext = new BasicHttpContext(); HttpRequest request2 = (HttpRequest) localContext.getAttribute( ExecutionContext.HTTP_REQUEST); httpclient.setHttpRequestRetryHandler(dhr);BasicCookieStore cookieStore = new BasicCookieStore(); BasicClientCookie2 cookie = new BasicClientCookie2("Content-Type","text/html;charset=UTF-8"); BasicClientCookie2 cookie1 = new BasicClientCookie2("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36");cookieStore.addCookie(cookie); cookieStore.addCookie(cookie1);localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore); HttpGet request = new HttpGet(); request.setURI(URI.create(url));HttpResponse response = null; String rawHTML = "";response = httpclient.execute(request,localContext); int StatusCode = response.getStatusLine().getStatusCode(); //获取响应状态码System.out.println(StatusCode);if(StatusCode == 200){ //状态码200表示响应成功//获取实体内容rawHTML = EntityUtils.toString (response.getEntity());System.out.println(rawHTML);//输出实体内容EntityUtils.consume(response.getEntity()); //消耗实体}else {//关闭HttpEntity的流实体EntityUtils.consume(response.getEntity()); //消耗实体Thread.sleep(20*60*1000); //如果报错先休息30分钟}httpclient.close();System.out.println(rawHTML);return rawHTML;}
}
java网络爬虫连接超时解决[实战程序]相关推荐
- 常见的一些反爬虫策略(下篇)-Java网络爬虫系统性学习与实战系列(10)
常见的一些反爬虫策略(下篇)-Java网络爬虫系统性学习与实战系列(10) 文章目录 联系方式 反爬虫策略 文本混淆 SVG映射 CSS文字偏移 图片混淆伪装 字体反爬 Referer字段反爬 数据分 ...
- InfoQ网站作者的文章列表文章详情获取-Java网络爬虫系统性学习与实战系列(13)
InfoQ网站作者的文章列表&文章详情获取-Java网络爬虫系统性学习与实战系列(13) 文章目录 联系方式 概述 分析 配置好Xpath规则 selenium工具类 获取InfoQ文章列表 ...
- 掘金网站作者的文章列表文章详情获取-Java网络爬虫系统性学习与实战(14)
掘金网站作者的文章列表&文章详情获取-Java网络爬虫系统性学习与实战(14) 文章目录 联系方式 概述 分析 配置好Xpath规则 selenium工具类 获取文章列表 获取文章详情数据 p ...
- 在不同领域,大家用爬虫怎么盈利的-Java网络爬虫系统性学习与实战系列(4)
在不同领域,大家用爬虫怎么盈利的-Java网络爬虫系统性学习与实战系列(4) 文章目录 概述 出行抢票软件 微博上的僵尸粉 电商比价/返利平台 社区抓取数据和内容 联系方式 系列文章地址: Java网 ...
- 了解爬虫的风险与以及如何规避风险-Java网络爬虫系统性学习与实战系列(3)
了解爬虫的风险与以及如何规避风险-Java网络爬虫系统性学习与实战系列(3) 文章目录 概述 法律风险 民事风险 刑事风险 个人信息的法律风险 著作权的风险(文章.图片.影视等数据) 5不要 3准守 ...
- Java网络爬虫实战案例一
紧接我们上次的问题,如何获取服务器发送的资源,保存到本地?上一篇文章见java网络爬虫核心原理. 一.Java IO流三分游(input,output) 我们知道计算机是用来处理数据的.所有的程序 ...
- java网络爬虫,乱码问题终于完美解决
java网络爬虫,乱码问题终于完美解决 参考文章: (1)java网络爬虫,乱码问题终于完美解决 (2)https://www.cnblogs.com/-LilyBlog-/p/7593841.htm ...
- Java网络爬虫学习记录(请求基础篇)
目录 个人实验遇见错误集: 一.javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX ...
- 第三十六期:学 Java 网络爬虫,需要哪些基础知识?
说起网络爬虫,大家想起的估计都是 Python ,诚然爬虫已经是 Python 的代名词之一,相比 Java 来说就要逊色不少.有不少人都不知道 Java 可以做网络爬虫,其实 Java 也能做网络爬 ...
最新文章
- STM32CubedMX 下载与安装
- 从设计网络就开始知识蒸馏
- Windows 全部调试符号包下载
- Java中实现使用split方法分隔字符串
- 深度学习之windows python faster rcnn 配置及demo运行
- 行为型模式:中介者模式
- Python开发【第七篇】: 面向对象和模块补充
- [Vue warn]: Duplicate keys detected: ‘0‘. This may cause an update error.
- 《Python Cookbook 3rd》笔记(5.13):读写压缩文件
- Flutter延时任务、Flutter通过Future与Timer实现延时任务
- php是视频还是图片格式,php 视频、音频和图片文件上传,该如何解决
- php用win还是linux系统,做网站选择linux系统还是选择windows系统好?
- 【Ansys Workbench】—直接优化
- idm下载器怎么下载网页视频?如何用idm自动下载网站文件?
- 中国移动飞信的研究 笔记二
- 二级域名分发系统美化版网站源码 附搭建教程
- LTE语音业务-VOLTE(一)
- GPT磁盘如何正确分区以及UEFI引导怎么修复?
- Rooting A Linux System 101
- 2016年4月计算机组成原理试题答案,2019年4月江苏自考02318计算机组成原理模拟试题及答案...