上网时是使用Http协议访问网页的,在编写爬虫程序时,使用 Java 的 HTTP 协议客户端HttpClient技术实现网页数据的抓取。
1. Get 请求
运行环境:已经配置好pom.xml 、log4j.properties
测试代码
测试结果:
(1)没有日志文件的测试结果?
(2)有日志文件的测试结果
把pom.xml的 slf4j 的test注释掉
可复制代码:?
package cn.itcast.crawler.test;
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 java.io.IOException;
/**
* HttpClient 中 Get 请求测试步骤
*
* 1. 创建HttpClient对象
* 2. 创建HttpGet对象,设置url访问地址
* 3. 使用httpClient对象发起请求,获取response
* 4. 解析响应
* 5. 关闭response资源
* 6. 关闭浏览器HttpClient资源
*/
public class HttpGetTest {
public static void main(String[] args) {
// 1. 创建HttpClient对象
CloseableHttpClient httpClient = HttpClients.createDefault();
// 2. 创建HttpGet对象,设置url访问地址
HttpGet httpGet = new HttpGet("http://www.itcast.cn");
// 为了方便释放资源,把response放到外面来定义
CloseableHttpResponse response =null;
try {
// 3. 使用httpClient对象发起请求,获取response
response = httpClient.execute(httpGet);
// 4. 解析响应
// 判断状态码是否是200
if (response.getStatusLine().getStatusCode()==200){
//获取显示内容
String content = EntityUtils.toString(response.getEntity(), "utf-8");
//测试:打印长度
System.out.println(content.length());
}
} catch (IOException e) {
e.printStackTrace();
}finally {
// 5. 关闭response资源
//会有异常,try catch 一下
try {
response.close();
} catch (IOException e) {
e.printStackTrace();
}
// 6. 关闭浏览器资源
//会有异常,try catch 一下
try {
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
?
|