
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属性,在继续使用此放弃进行访问。
两种实现方式:
广度优先(横向将所有连接的页面抓取),深度优先(纵向将所有的页面抓取)
现在很多大型网站有反爬虫技术。
本文介绍如何使用Apache HttpClient库实现简单的网页爬取任务。通过配置依赖并编写Java代码,可以发送HTTP请求并解析返回的HTML内容。文章还探讨了进一步抓取整个网站的方法,包括广度优先和深度优先两种策略。
609

被折叠的 条评论
为什么被折叠?



