jsoup 简单解析html ul li

在使用 Jsoup 解析 HTML 中的 <ul><li> 元素时,可以使用 select() 方法和 CSS 选择器来选取它们。下面是一个简单的例子:

String html = "<ul><li>Item 1</li><li>Item 2</li><li>Item 3</li></ul>";
Document document = Jsoup.parse(html);
Elements ulElements = document.select("ul"); // 选取 ul 元素
for (Element ulElement : ulElements) {
    Elements liElements = ulElement.select("li"); // 在 ul 元素内部选取 li 元素
    for (Element liElement : liElements) {
        String text = liElement.text(); // 获取 li 元素的文本内容
        System.out.println(text);
    }
}

输出结果:

Item 1
Item 2
Item 3

在上述代码中,我们首先使用 Jsoup.parse() 方法将 HTML 字符串解析成一个 Document 对象。然后,我们使用 select() 方法和 CSS 选择器来选取 ul 元素,再使用 select() 方法和 CSS 选择器在 ul 元素内部选取 li 元素。最后,我们可以使用 text() 方法来获取 li 元素的文本内容。

如果要在 Jsoup 中解析 HTML 中某个 <li> 元素下的子 <div> 元素,可以在 li 元素后面使用空格 并跟上 CSS 选择器来选择 li 元素下的子元素。 下面是一个例子:

String html = "<ul><li><div>Div 1</div></li><li><div>Div 2</div></li></ul>";
Document document = Jsoup.parse(html);

Elements lis = document.select("li");
for (Element li : lis) {
   Element div = li.selectFirst("div");
   System.out.println(div.text());
}

在上面的例子中,我们首先使用 Jsoup.parse() 方法将 HTML 字符串解析成一个 Document 对象。然后,我们使用 select() 方法和 CSS 选择器来选取 li 元素,并通过调用 selectFirst() 方法选择 li 下的第一个 div 元素,最后获取 div 元素的文本内容。

输出结果:

Div 1
Div 2

如果要在 Jsoup 中解析 HTML 中某个 <li> 元素下的子 <div> 元素下的子 <div> 元素下的子 <span> 元素,可以通过多次嵌套使用 CSS 选择器来选取子元素。下面是一个例子:

String html = "<ul><li><div><div><span>Span 1</span></div></div></li><li><div><div><span>Span 2</span></div></div></li></ul>";
Document document = Jsoup.parse(html);

Elements lis = document.select("li");
for (Element li : lis) {
   Element span = li.selectFirst("div > div > span");
   System.out.println(span.text());
}

在上面的例子中,我们首先使用 Jsoup.parse() 方法将 HTML 字符串解析成一个 Document 对象。然后,我们使用 select() 方法和 CSS 选择器来选取 li 元素,并通过多次嵌套使用 CSS 选择器选择 li 前的子元素 div、子元素 div 下的子元素 div 和子元素 div 下的子元素 span,最后获取 span 元素的文本内容。

输出结果:

Span 1
Span 2

如果要解析 HTML 中某个 <li> 元素下的子 <div> 元素下的多个子 <div> 元素下的多个子 <span> 元素,我们同样可以使用 CSS 选择器来选取这些元素。

以下是一个例子:

String html = "<ul><li><div><div><span>Span 1</span></div><div><span>Span 2</span></div></div></li><li><div><div><span>Span 3</span></div><div><span>Span 4</span></div></div></li></ul>";
Document document = Jsoup.parse(html);

Elements lis = document.select("li");
for (Element li : lis) {
    Elements spans = li.select("div > div > span");
    for (Element span : spans) {
        System.out.println(span.text());
    }
}

在上面的例子中,我们首先使用 Jsoup.parse() 方法将 HTML 字符串解析成一个 Document 对象。然后,我们使用 select() 方法和 CSS 选择器来选取 li 元素,并通过 CSS 选择器选择 li 前的子元素 div、子元素 div 下的多个子元素 div 和多个子元素 div 下的子元素 span,最后获取每个 span 元素的文本内容。对于每个 li 元素,我们都可以通过 select() 方法获取其下的所有符合条件的 span 元素,再通过 for 循环逐个输出文本内容。

输出结果:

Span 1
Span 2
Span 3
Span 4

如果要解析 HTML 中某个 <li> 元素下的子 <div> 元素下的多个子 <div> 元素下的子 <span> 元素中 class 属性为 num 的元素,我们可以将 CSS 选择器更改为 li > div > div > div > span.num

以下是一个例子:

String html = "<ul><li><div><div><div><span class='num'>1</span><span>2</span></div><div><span class='num'>3</span><span>4</span></div></div></div></li><li><div><div><div><span class='num'>5</span><span>6</span></div><div><span class='num'>7</span><span>8</span></div></div></div></li></ul>";
Document document = Jsoup.parse(html);

Elements lis = document.select("li");
for (Element li : lis) {
    Elements nums = li.select("div > div > div > span.num");
    for (Element num : nums) {
        System.out.println(num.text());
    }
}

在上面的例子中,我们在 select() 方法中将 CSS 选择器更改为 li > div > div > div > span.num,来选取 li 元素下的子元素 div,子元素 div 下的多个子元素 div,多个子元素 div 下的子元素 span,其 class 属性为 num 的元素。接着,我们通过 for 循环逐个输出符合条件的 span 元素的文本内容。

输出结果:

1
3
5
7

要实现Java代码来获取<li>标签中的<div>内容,但不包含<span>内容,可以使用Jsoup库来解析HTML,并使用CSS选择器和遍历来提取所需的内容。

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class Main {
    public static void main(String[] args) {
        String html = "<ul>" +
                "<li><div>Content 1 <span>Span content to be excluded</span></div></li>" +
                "<li><div>Content 2 <span>Span content to be excluded</span></div></li>" +
                "<li><div>Content 3 <span>Span content to be excluded</span></div></li>" +
                "</ul>";

        Document doc = Jsoup.parse(html);

        Elements liElements = doc.select("li"); // 使用CSS选择器选择所有<li>标签

        for (Element liElement : liElements) {
            Element divElement = liElement.selectFirst("div"); // 使用CSS选择器选择当前<li>标签内的第一个<div>标签

            // 排除<div>标签内的<span>标签
            Elements spanElements = divElement.select("span");
            spanElements.remove();

            // 打印结果
            System.out.println(divElement.text());
        }
    }
}

以上代码中,我们使用Jsoup库将HTML字符串解析为一个Document对象。然后,我们使用select()方法选择所有的<li>标签,并使用selectFirst()方法选择每个<li>标签内的第一个<div>标签。接着,我们使用select()方法选择<div>标签内的所有<span>标签,并使用remove()方法将它们从<div>标签中移除。最后,我们使用text()方法获取<div>标签的文本内容,并将其打印出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值