美文网首页程序员Java 杂谈IT技术篇
爬取网页内容的利器--Jsoup用法简介

爬取网页内容的利器--Jsoup用法简介

作者: 菜菜___ | 来源:发表于2019-01-17 10:32 被阅读10次

    有时候我们想爬取一些网站的数据 ,方便业务信息的采集等,Jsoup给我们提供了很多方便的方法,轻轻松松解析html代码片段,然后拿到自己想要的数据。

    Jsoup是一款Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

    下面是关于Jsoup提供的功能方法目录参考链接


    可以看出Jsoup的主要功能:
    (1)从一个URL,文件或字符串中解析HTML
    (2)使用DOM或CSS选择器来查找、取出数据
    (3)可操作HTML元素、属性、文本

    使用方法:

    一:下载Jsoup依赖的三方jar包,下载地址,将下载好的jar包放入WEB-INF——>lib目录下


    二:爬取网页的源码:
    当我们不知道jsoup时,我们想获取百度首页的body内容,我们可能会这样写:

    public static void catchHtmlCode(String getUrl){
            BufferedReader buffreader;
            try {
                URL u = new URL(getUrl);
                URLConnection connection = u.openConnection();
                InputStream inputStream = connection.getInputStream();
        
                buffreader = new BufferedReader(new InputStreamReader(inputStream, "utf-8"));
                StringBuffer buff = new StringBuffer();
                String line;
                while (null != (line = buffreader.readLine())) {
                    buff.append(line);
                }
                String html = buff.toString();
                /*解析html字符串*/   
                Document doc = Jsoup.parse(html);
                Element body = doc.body();
                System.out.println("code:"+body.html());
            }catch (Exception e) {
                e.printStackTrace();
            }
        }
    

    这样看起来很麻烦,用jsoup一行代码便能达到异曲同工的效果:

    public static void catchHtmlCode(String getUrl){
            try {
                Document doc = Jsoup.connect(getUrl).get();
                Element body = doc.body();
                System.out.println("code:"+body.html());
            }catch (Exception e) {
                e.printStackTrace();
            }
        }
    

    三:查看爬取的结果:

    public static void main(String[] args) {
            catchHtmlCode("http://www.baidu.com");
        }
    


    可以看到爬取的结果和百度首页的源码一致。

    Document查找元素常用的方法:

    body():能够获取文档body元素的所有子元素,与 getElementsByTag("body")相同
    getElementById():通过id来获取元素,和javascript写法相同
    getElementsByClass():通过class类名来获取元素
    getElementsByTag():通过标签名称来获取元素

    Document获取元素数据常用的方法:

    text():获取标签的文本内容,和jquery用法相似
    html():获取标签的HTML内容,包含标签
    title():获取html<title>标签的内容

    Document操作元素常用的方法

    append():在调用元素的最后面添加html片段
    appendText():在调用元素的最后面添加文本内容
    prepend():在调用元素的最前面添加html片段
    prependText():在调用元素的最前面添加文本内容
    更多用法参考Jsoup官网API

    原文作者技术博客:https://www.jianshu.com/u/ac4daaeecdfe
    95后前端妹子一枚,爱阅读,爱交友,将工作中遇到的问题记录在这里,希望给每一个看到的你能带来一点帮助。
    欢迎留言交流。

    相关文章

      网友评论

        本文标题:爬取网页内容的利器--Jsoup用法简介

        本文链接:https://www.haomeiwen.com/subject/pgcjdqtx.html