欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

httpclient

程序员文章站 2022-07-10 17:18:07
...

httpclient

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)测试:住区的是百度的首页

httpclient

4.利用这个技术是可以抓取整个网站的

获取当当前的网页,获取上面的所有的a标签,获取a标签的href属性,在继续使用此放弃进行访问。

两种实现方式:

广度优先(横向将所有连接的页面抓取),深度优先(纵向将所有的页面抓取)

 

现在很多大型网站有反爬虫技术。