我是靠谱客的博主 跳跃小海豚,最近开发中收集的这篇文章主要介绍爬虫记忆——【基础】httpclient的基本使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

        在上一篇文章中介绍了两个工具,用于开发最最基本的爬虫,这两个工具分别是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的基本使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部