在上一篇文章中介绍了两个工具,用于开发最最基本的爬虫,这两个工具分别是httpclient和jsoup,这篇文章中,将对httpclient做一些基本的介绍。
首先,我们通过maven引入httpclient的包,如何引入在此不做过多介绍了,引入之后,我们就可以愉快地使用httpclient了,第一步,我们先定一个小目标,那就是获取百度首页的网页信息,很简单,代码如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18public static void main(String[] args) throws Exception { //需要获取数据的url String url = "https://www.baidu.com"; //实例化HttpClient HttpClient httpClient = new HttpClient(); //以GET的方式获取数据 HttpMethod method = new GetMethod(url); //执行,发送请求 httpClient.executeMethod(method); //显示状态吗 System.out.println(method.getStatusLine()); //显示页面内容 System.out.println(method.getResponseBodyAsString()); //释放连接 method.releaseConnection(); }
其部分运行结果如下:
咦?怎么有乱码?这奇怪的字符是啥玩意儿?如何解决?
莫慌!一般出现这种情况都是编码的锅,所以设置一下编码方式即可,那么如何才能知道我们抓取的网页是何种编码呢?这时候就要请出一个网页分析的利器了——谷歌浏览器的开发者工具,在谷歌浏览器界面按F12或者右键-检查,都能打开开发者工具,这时候应该能看到网页代码和其他一些奇奇怪怪的内容(之后会慢慢介绍这些的),一般在网页代码头部,即<head>标签内,可以找到网页编码,以百度首页为例,如图所示:
可见,百度首页的编码是utf-8(其实,很大一部分的网页都是utf-8这个编码)。确定编码方式之后,我们就需要告诉程序,请以指定编码去请求网页,通过httpclient,可以很方便的完成这个操作,代码如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22public static void main(String[] args) throws Exception { //需要获取数据的url String url = "https://www.baidu.com"; //指定编码 String charset = "utf-8"; //实例化HttpClient HttpClient httpClient = new HttpClient(); //按照指定编码去请求网页 httpClient.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, charset); //以GET的方式获取数据 HttpMethod method = new GetMethod(url); //执行,发送请求 httpClient.executeMethod(method); //显示状态吗 System.out.println(method.getStatusLine()); //显示页面内容 System.out.println(method.getResponseBodyAsString()); //释放连接 method.releaseConnection(); }
其运行结果如下图所示:
可见,奇怪的字符已经变成我们可读的字符了,噢耶!
但是,很多网页都会检查收到的请求是否合法,只有合法的请求才会返回正确的数据,在这类检查中,最最常见的就是对请求头(Request Headers)的检查。我们可以通过谷歌浏览器的开发者工具来看下请求的请求头有什么。那么如何操作呢?打开开发者工具之后,可以依次点击Network-All-所需请求,还是以百度首页为例,其请求头如图所示:
确定请求头之后,我们便可以编写代码,设置请求头了,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27public static void main(String[] args) throws Exception { //需要获取数据的url String url = "https://www.baidu.com"; //指定编码 String charset = "utf-8"; //实例化HttpClient HttpClient httpClient = new HttpClient(); //按照指定编码去请求网页 httpClient.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, charset); //以GET的方式获取数据 HttpMethod method = new GetMethod(url); //设置请求头 method.setRequestHeader("Host", "www.baidu.com"); method.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) " + "Chrome/66.0.3359.181 Safari/537.36"); //执行,发送请求 httpClient.executeMethod(method); //显示状态吗 System.out.println(method.getStatusLine()); //显示页面内容 System.out.println(method.getResponseBodyAsString()); //释放连接 method.releaseConnection(); }
运行!应该能看到在设置了请求头之后和之前的结果有一些不一样了!
httpclient的最最基本的介绍就到这了,掌握这些已经可以获取很多网页的信息了,在下一篇文章中,我们将对httpclient做进一步的封装,形成一个工具类,更加方便我们使用。
最后
以上就是跳跃小海豚最近收集整理的关于爬虫记忆——【基础】httpclient的基本使用的全部内容,更多相关爬虫记忆——【基础】httpclient内容请搜索靠谱客的其他文章。
发表评论 取消回复