专栏名称: 菜菜___
我是蔡蔡,行走在互联网的程序媛,热爱生活,乐...
今天看啥  ›  专栏  ›  菜菜___

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

菜菜___  · 简书  ·  · 2019-01-17 10:32

有时候我们想爬取一些网站的数据 ,方便业务信息的采集等,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后前端妹子一枚,爱阅读,爱交友,将工作中遇到的问题记录在这里,希望给每一个看到的你能带来一点帮助。
欢迎留言交流。




原文地址:访问原文地址
快照地址: 访问文章快照