httpclient
程序员文章站
2022-07-10 17:18:07
...
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属性,在继续使用此放弃进行访问。
两种实现方式:
广度优先(横向将所有连接的页面抓取),深度优先(纵向将所有的页面抓取)
现在很多大型网站有反爬虫技术。
推荐阅读
-
通过HttpClient 调用ASP.NET Web API示例
-
jsp 中HttpClient中的POST方法实例详解
-
Spring中@Scheduled和HttpClient的连环坑
-
php实现httpclient类示例
-
Android 中HttpURLConnection与HttpClient使用的简单实例
-
Android下通过httpClient发送GET和POST请求的实例代码
-
HttpClient Post 二进制/字节流/byte[]实例代码
-
C# HttpClient Cookie验证解决方法
-
那些年用httpclient时踩过的一些坑
-
JSP开发中Apache-HTTPClient 用户验证的实例详解