国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

java網絡爬蟲連接超時解決實例代碼

2024-07-13 10:17:10
字體:
來源:轉載
供稿:網友

本文研究的主要是javascript/82364.html">java/168330.html">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網絡爬蟲連接超時解決實例代碼的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 牟定县| 海淀区| 阳东县| 白山市| 咸阳市| 虞城县| 芜湖县| 志丹县| 和龙市| 通榆县| 奉新县| 丰城市| 安阳县| 崇礼县| 林西县| 遂平县| 临沂市| 舒城县| 阜新市| 额尔古纳市| 永平县| 苍山县| 五峰| 荔浦县| 鱼台县| 邵武市| 贺兰县| 仪陇县| 克什克腾旗| 英德市| 阆中市| 合作市| 沛县| 西充县| 思南县| 衡阳市| 泽州县| 博爱县| 东光县| 乐安县| 崇信县|