httpclient

1.HttpClient 是 Apache JakartaCommon 下的子項目,可以用來提供高效的、最新的、功能豐富的支持 HTTP 協議的客戶端編程工具包,並且它支持 HTTP 協議最新的版本和建議。

2.利用httpClient模擬一個http請求,就可以得到它的響應,響應實際上就是字符串,HTML文件源代碼

3.爬蟲

(1)所需包

                <dependency>
			<groupId>org.apache.httpcomponents</groupId>
			<artifactId>httpclient</artifactId>
			<version> 4.3.5</version>
		</dependency>
		<dependency>
			<groupId>org.apache.httpcomponents</groupId>
			<artifactId>httpmime</artifactId>
			<version>4.3.1</version>
		</dependency>

(2)代碼

package com.liming.test;

import java.io.IOException;

import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.junit.Test;

public class TestHttpclient {
	@Test//抓取一個網站獲取它返回的html頁面
	public void httpclient() throws Exception{
		/**
		 * 步驟:
		 * 1.創建一個httpclient對象
		 * 2.指定一個網站:請求地址
		 * 3.創建一個httpGet請求
		 * 4.excute方法,提交請求
		 * 5.返回一個response對象
		 * 6.從中解析出HTML
		 */
		//創建httpclient對象
		CloseableHttpClient httpClient = HttpClients.createDefault();
		//指定一個網站:請求地址
		String uri = "https://www.baidu.com/?tn=98010089_dg&ch=12";
		//創建一個httpGet請求
		HttpGet httpGet = new HttpGet(uri);
		//excute方法,提交請求
		CloseableHttpResponse execute = httpClient.execute(httpGet);
		//返回一個response對象
		String string = EntityUtils.toString(execute.getEntity(),"utf-8");
		
		System.out.println(string);
		httpClient.close();
	}
}

(3)測試:住區的是百度的首頁


4.利用這個技術是可以抓取整個網站的

獲取噹噹前的網頁,獲取上面的所有的a標籤,獲取a標籤的href屬性,在繼續使用此放棄進行訪問。

兩種實現方式:

廣度優先(橫向將所有連接的頁面抓取),深度優先(縱向將所有的頁面抓取)

 

現在很多大型網站有反爬蟲技術。

發佈了165 篇原創文章 · 獲贊 23 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章