c httpclient抓取网页(分为GET请求、有参请求相同有参数的连接)
优采云 发布时间: 2022-02-13 15:13c httpclient抓取网页(分为GET请求、有参请求相同有参数的连接)
HttpClient是Apache Jakarta Common下的一个子项目,可用于提供高效、最新、功能丰富的支持HTTP协议的客户端编程工具包,支持最新版本和推荐HTTP 协议。因此,为了爬取网络资源,需要使用Http协议来访问网页。
HttpClient分为不带参数的GET请求、带参数的GET请求、不带参数的POST请求、带参数的POST请求。
无参数GET请求:类似于普通的主页连接,没有任何参数的网页
HttpGet httpGet = new HttpGet("https://www.baidu.com/");
带参数的GET请求:带参数的连接,例如带有搜索和分类功能的网页
HttpGet httpGet = new HttpGet("https://search.jd.com/Search?keyword=Java");
不带参数的POST请求:与带参数的GET请求相同
HttpPost httpPost = new HttpPost("https://www.baidu.com/");
带参数的POST请求:url地址无参数,将参数keys=java放在表单中提交
// 创建HttpGet请求
HttpPost httpPost = new HttpPost("https://search.jd.com/");
// 声明存放参数的List集合
List params = new ArrayList();
params.add(new BasicNameValuePair("keys", "java"));
// 创建表单数据Entity
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(params, "UTF-8");
// 设置表单Entity到httpPost请求对象中
httpPost.setEntity(formEntity);
开始
IDEA环境配置
org.apache.httpcomponents
httpclient
4.5.3
org.slf4j
slf4j-log4j12
1.7.25
添加 log4j.properties 资源文件
log4j.rootLogger=DEBUG,A1
log4j.logger.cn.itcast = DEBUG
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c]-[%p] %m%n
编写代码
public static void main(String[] args) throws Exception {
// 创建 HttpClient 对象
CloseableHttpClient httpClient = HttpClients.createDefault();
// 创建 HTTPGET 请求
HttpGet httpGet = new HttpGet("https://www.baidu.com/");
// 使用 HttpClient 发起请求
CloseableHttpResponse response = httpClient.execute(httpGet);
// 判断响应状态码是否为200(200指OK,,网页请求成功)
if (response.getStatusLine().getStatusCode() == 200) {
// 先把网页保存成String,解析获取字符集,将网页中文内容转换成对应字符集,再转换成统一的字符集utf-8
String content = EntityUtils.toString(response.getEntity(), "UTF-8");
System.out.println(content);
}
}
输出结果为网页源代码,可自行演示