概述
在上一篇文章中介绍了两个工具,用于开发最最基本的爬虫,这两个工具分别是httpclient和jsoup,这篇文章中,将对httpclient做一些基本的介绍。
首先,我们通过maven引入httpclient的包,如何引入在此不做过多介绍了,引入之后,我们就可以愉快地使用httpclient了,第一步,我们先定一个小目标,那就是获取百度首页的网页信息,很简单,代码如下所示:
public 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,可以很方便的完成这个操作,代码如下所示:
public 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-所需请求,还是以百度首页为例,其请求头如图所示:
确定请求头之后,我们便可以编写代码,设置请求头了,代码如下:
public 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的基本使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复