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

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

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

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

 
13079544-d2c547f756210740.png
 

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

 

使用方法:

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

 
13079544-215fddba98fafe77.png
 

 

 
13079544-4bd023c5631af916.png
 
 

二:爬取网页的源码:
当我们不知道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");
    }
 
13079544-686d2be342efa09d.png
 
 
 
13079544-b3e39c34cd55ce04.png
 
 

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

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后前端妹子一枚,爱阅读,爱交友,将工作中遇到的问题记录在这里,希望给每一个看到的你能带来一点帮助。
欢迎留言交流。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值