【Java爬虫】001
【Java爬虫】001
一、HttpClient概述1、百科简介HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。2、主要功能(1)实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等)
(2)支持自动转向
()支持 HTTP
【Java爬虫】001
1、百科简介
HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。
2、主要功能
(1)实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等) (2)支持自动转向 ()支持 HTTPS 协议 (4)支持代理服务器等
我们用它来抓取页面,用于之后对页面进行解析;
0、Maven依赖
代码语言:javascript代码运行次数:0运行复制<?xml version="1.0" encoding="UTF-8"?>
<project xmlns=".0.0"
xmlns:xsi=";
xsi:schemaLocation=".0.0 .0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId></groupId>
<artifactId>ZB2020</artifactId>
<version>1.0-SAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
<!-- .apache.httpcomponents/httpclient -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.12</version>
</dependency>
</dependencies>
</project>
1、无参Get请求
代码语言:javascript代码运行次数:0运行复制package com.httpclient;
import org.apache.CloseableHttpRespe;
import org.apache.HttpGet;
import org.apache.http.CloseableHttpClient;
import org.apache.http.HttpClients;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
//无参数的get请求
public class TestGet {
public static void main(String[] args) throws IOException {
//1、创建httpClient对象
CloseableHttpClient httpClient = ();
//2、输入网址,配置HttpGet请求
HttpGet httpGet = new HttpGet(";);
//、发起请求,并将相应保存到respe对象
CloseableHttpRespe respe = (httpGet);
//4、如果相应状态码等于200,将相应内容解析成字符串并输出
if (respe.getStatusLine().getStatusCode() == 200) {
String content = (respe.getEntity(), "UTF-8");
println(content);
}
//5、释放respe对象和httpClient对象
();
();
}
}
2、带参Get请求
代码语言:javascript代码运行次数:0运行复制package com.httpclient;
import org.apache.CloseableHttpRespe;
import org.apache.HttpGet;
import org.apache.utils.URIBuilder;
import org.apache.http.CloseableHttpClient;
import org.apache.http.HttpClients;
import org.apache.http.util.EntityUtils;
//带参数的get请求
public class TestGetP {
public static void main(String[] args) throws Exception {
//1、创建httpClient对象
CloseableHttpClient httpClient = ();
//2、输入网址,配置HttpGet请求
//2.1、创建uriBuilder,输入网址
URIBuilder builder = new URIBuilder(";);
//2.2、设置参数
builder.setParameter("keys","Java");
//2.、配置HttpGet请求
HttpGet httpGet = new HttpGet(builder.build());
//、发起请求,并将相应保存到respe对象
CloseableHttpRespe respe = (httpGet);
//4、如果相应状态码等于200,将相应内容解析成字符串并输出
if (respe.getStatusLine().getStatusCode() == 200) {
String content = (respe.getEntity(), "UTF-8");
println(content);
}
//5、释放respe对象和httpClient对象
();
();
}
}
、无参Post请求
代码语言:javascript代码运行次数:0运行复制package com.httpclient;
import org.apache.CloseableHttpRespe;
import org.apache.HttpPost;
import org.apache.http.CloseableHttpClient;
import org.apache.http.HttpClients;
import org.apache.http.util.EntityUtils;
//无参的post
public class TestPost {
public static void main(String[] args) throws Exception {
//1、创建httpClient对象
CloseableHttpClient httpClient = ();
//2、输入网址,配置HttpPost请求
HttpPost httpPost = new HttpPost(";);
//、发起请求,并将相应保存到respe对象
CloseableHttpRespe respe = (httpPost);
//4、如果相应状态码等于200,将相应内容解析成字符串并输出
if (respe.getStatusLine().getStatusCode() == 200) {
String content = (respe.getEntity(), "UTF-8");
println(content);
}
//5、释放respe对象和httpClient对象
();
();
}
}
4、带参Post请求
代码语言:javascript代码运行次数:0运行复制package com.httpclient;
import org.apache.http.ameValuePair;
import org.apache.entity.UrlEncodedFormEntity;
import org.apache.CloseableHttpRespe;
import org.apache.HttpPost;
import org.apache.http.CloseableHttpClient;
import org.apache.http.HttpClients;
import org.apache.BasicameValuePair;
import org.apache.http.util.EntityUtils;
import java.util.ArrayList;
import java.util.List;
//带参的post
public class TestPostP {
public static void main(String[] args) throws Exception {
//1、创建httpClient对象
CloseableHttpClient httpClient = ();
//2、输入网址,配置HttpPost请求
HttpPost httpPost = new HttpPost(";);
//声明List,封装表单中的参数
List<ameValuePair> pairs = new ArrayList<>();
pairs.add(new BasicameValuePair("keys","Java"));
//创建表单的Entity对象,参数1:表单参数列表;参数2:参数编码;
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(pairs, "utf8");
//设置表单的Entity对象到Post请求中
httpPost.setEntity(formEntity);
//、发起请求,并将相应保存到respe对象
CloseableHttpRespe respe = (httpPost);
//4、如果相应状态码等于200,将相应内容解析成字符串并输出
if (respe.getStatusLine().getStatusCode() == 200) {
String content = (respe.getEntity(), "UTF-8");
println(content);
}
//5、释放respe对象和httpClient对象
();
();
}
}
5、连接池
代码语言:javascript代码运行次数:0运行复制package com.httpclient;
import org.apache.CloseableHttpRespe;
import org.apache.HttpGet;
import org.apache.http.CloseableHttpClient;
import org.apache.http.HttpClients;
import org.apache.http.PoolingHttpClientConnectionManager;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
//连接池
public class TestPool {
public static void main(String[] args) throws Exception {
//1、创建连接池管理器
PoolingHttpClientConnectionManager manager = new PoolingHttpClientConnectionManager();
//2、设置最大连接数
manager.setMaxTotal(200);
//、设置每个主机的并发数
manager.setDefaultMaxPerRoute(20);
//4、使用连接池管理器发起请求
doGet(manager);
doGet(manager);
}
//4、使用连接池管理器发起请求
private static void doGet(PoolingHttpClientConnectionManager manager) throws Exception {
//4.1、从管理器中获取HttpClient对象
CloseableHttpClient httpClient = ().setConnectionManager(manager).build();
//4.2、接下来就是正常的使用了,不能关闭httpClient,由管理器处理
//2、输入网址,配置HttpGet请求
HttpGet httpGet = new HttpGet(";);
//、发起请求,并将相应保存到respe对象
CloseableHttpRespe respe = (httpGet);
//4、如果相应状态码等于200,将相应内容解析成字符串并输出
if (respe.getStatusLine().getStatusCode() == 200) {
String content = (respe.getEntity(), "UTF-8");
println(content);
}
//5、释放respe对象和httpClient对象,不能关闭httpClient,由管理器处理
();
// ();
}
}
6、请求参数
代码语言:javascript代码运行次数:0运行复制package com.httpclient;
import org.apache.config.RequestConfig;
import org.apache.CloseableHttpRespe;
import org.apache.HttpGet;
import org.apache.http.CloseableHttpClient;
import org.apache.http.HttpClients;
import org.apache.http.util.EntityUtils;
//配置(请求参数)测试
public class TestConfig {
public static void main(String[] args) throws Exception {
//1、创建httpClient对象
CloseableHttpClient httpClient = ();
//2、输入网址,配置HttpGet请求
HttpGet httpGet = new HttpGet(";);
//2.1、配置请求参数
RequestConfig requestConfig = ()
.setConnectTimeout(1000)//设置创建连接的最长时间
.setConnectionRequestTimeout(500)//设置获取连接的最长时间
.setSocketTimeout(10 * 1000)//设置数据传输的最长时间
.build();
//2.2、设置请求参数
httpGet.setConfig(requestConfig);
//、发起请求,并将相应保存到respe对象
CloseableHttpRespe respe = (httpGet);
//4、如果相应状态码等于200,将相应内容解析成字符串并输出
if (respe.getStatusLine().getStatusCode() == 200) {
String content = (respe.getEntity(), "UTF-8");
println(content);
}
//5、释放respe对象和httpClient对象
();
();
}
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-01-06,如有侵权请联系 cloudcommunity@tencent 删除爬虫httpclient对象学习笔记java #感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
上传时间: 2025-07-23 14:27:18
上一篇:【Sass学习笔记】004
下一篇:【Sass学习笔记】003
推荐阅读
留言与评论(共有 5 条评论) |
本站网友 无限可能 | 22分钟前 发表 |
带参Get请求代码语言:javascript代码运行次数:0运行复制package com.httpclient; import org.apache.CloseableHttpRespe; import org.apache.HttpGet; import org.apache.utils.URIBuilder; import org.apache.http.CloseableHttpClient; import org.apache.http.HttpClients; import org.apache.http.util.EntityUtils; //带参数的get请求 public class TestGetP { public static void main(String[] args) throws Exception { //1 | |
本站网友 东莞地产 | 13分钟前 发表 |
原始发表:2025-01-06 | |
本站网友 明诚 | 7分钟前 发表 |
从管理器中获取HttpClient对象 CloseableHttpClient httpClient = ().setConnectionManager(manager).build(); //4.2 | |
本站网友 催眠治疗 | 14分钟前 发表 |
2 |