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)測試:住區的是百度的首頁
獲取噹噹前的網頁,獲取上面的所有的a標籤,獲取a標籤的href屬性,在繼續使用此放棄進行訪問。
兩種實現方式:
廣度優先(橫向將所有連接的頁面抓取),深度優先(縱向將所有的頁面抓取)
現在很多大型網站有反爬蟲技術。