Jsoup的使用

Jsoup的使用

最近在做一个功能需要解析html字符串,于是用到了Jsoup,整理了一番方便以后翻查。

Jsoup能够实现java对html文件和html字符串的解析,并能获取其内容和修改内容。

我是Maven工程,使用时需要导入Jsoup的依赖:

<!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.7.1</version>
</dependency>

1.解析html

1.1.解析html文件

 public static void main(String[] args) {
    try {
        // 第一个参数是文件路径,第二个参数是字符集
            Document document = Jsoup.parse(new File("E:/bookmarks_2020_6_24.html"),"utf-8");
            System.out.println(document);
         } catch (IOException e) {
             e.printStackTrace();
         }
 }

1.2.解析html字符串

// 如果是要解析body片段,可以使用Jsoup.parseBodyFragment(String htmlBody)
// 下面方法解析片段也是可以的
public static void main(String[] args) {
    String html = "<html><head><title>hello Jsoup</title></head><body><p>Use Jsoup Say Hello!</p></body></html>";
    Document document = Jsoup.parse(html);
    System.out.println(document);
 }

2.操作元素

Document中提供了一些选择元素的api

  • 获取元素:

    • getElementById(String id);
    • getElementsByTag(String tagName);
    • getElementsByClass(String className);
    • getElementsByAttribute(String key);

    获取元素还可以通过其他选择器,使用Element.select(String selector) 来选择,类似CSS中的选择器

  • 操作元素属性和数据:

    Element 中提供一些api操作元素的属性和数据

    • attr(String attrName) 获取元素
    • attr(String attrName, String value) 给指定属性设置属性值
    • attributes() 获取所有属性
    • text() 获取文本内容
    • text(String value) 设置文本内容
    • html() 获取元素内容(包含标签)
    • html(String content) 给元素设置内容(可以解析标签)
    • outerHtml() 获取改元素外的内容
    • data() 获取数据内容,如:style 和 script 标签

3.示例:

// 解析html字符串,将其中的http图片下载到本地,然后把文档流中的 img标签的src替换成本地图片的路径
public static void main(String[] args) {
    // content是一个html字符串,太长不作展示
    Document document = Jsoup.parse(content);
    Elements imgList = document.getElementsByTag("img");
    List<String> imgUrl = new ArrayList<>();
    for (Element img : imgList) {
        String src = img.attr("src");
        imgUrl.add(src);
    }
    
    // 遍历下载图片本地,代码略。。。
    
    // 将文档流中img标签的src属性值替换掉
    for (int i = 0; i < imgList.size(); i++) {
        imgList.get(i).attr("src","aaa_" + i + "png");
    }
    System.out.println(document.toString());
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Freguez · duoyu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值