java - Jsoup 查找具有特定文本的元素

标签 java html parsing jsoup

我想使用 JSoup 从 HTML 中选择一个包含特定文本的元素。 html是

<td style="vertical-align:bottom;text-align:center;width:15%">
<div style="background-color:#FFDD93;font-size:10px;margin:5px auto 0px auto;text-align:left;" class="genbg"><span class="corners-top-subtab"><span></span></span>
    <div><b>Pantry/Catering</b>
        <div>
            <div style="color:#00700B;">&#10003;&nbsp;Pantry Car Avbl
                <br />&#10003;&nbsp;Catering Avbl</div>
        </div>
        <div>
            <div><span>Dinner is served after departure from NZM on 1st day.;</span>...
                <br /><a style="font-size:10px;color:Red;" onClick="expandPost($(this).parent());" href="javascript:void(0);">Read more...</a>
            </div>
            <div style="display:none;">Dinner :2 chapati, rice, dal and chicken curry (NV) and paneer curry in veg &amp;Ice cream.; Breakfast:2 bread slices with jam and butter. ; Omlet of 2 eggs (Non veg),vada and sambar(veg)..; coffee &amp; lime juice</div>
        </div>
    </div><span class="corners-bottom-subtab"><span></span></span>
</div>

我想找到包含文本“Pantry/Catering”的 div 元素。我试过了

doc.select("div:contains(Pantry/Catering)").first();

但这似乎行不通。如何使用 Jsoup 获取此元素?

最佳答案

当我运行您的代码时,它会选择外部 div,而我假设您要查找的是内部 divdocumentation说它选择“包含指定文本的元素”。在这个简单的 html 中:

<div><div><b>Pantry/Catering</b></div></div>

选择器 div:contains(Pantry/Catering) 匹配两次,因为两次都包含文本“Pantry/Catering”:

<!-- First Match -->
<div><div><b>Pantry/Catering</b></div></div>

<!-- Second Match -->
<div><b>Pantry/Catering</b></div>

匹配项始终按此顺序进行,因为 jsoup 从外部进行匹配。因此 .first() 总是匹配外部 div。要提取内部 div,您可以使用 .get(1)

完整提取内部div:

doc.select("div:contains(Pantry/Catering)").get(1)

关于java - Jsoup 查找具有特定文本的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25517353/

相关文章:

java - 枚举上的基本方法调用

java - 如何使用 Java Http 客户端发送带有 multipart/form-data 主体的 PUT 请求?

html - 你如何获得没有定义宽度的元素的宽度?

c - Linux sscanf 函数不填充变量

parsing - 如何处理 EBNF 语法中不同标记中的重叠字符组?

java - 更新 ArrayList<HashMap<String, ?>>

java - Java中的组合锁赋值

html - 使用正则表达式在 HTML 中进行搜索? [ swift 1.2]

html - z-index 与 <object> : is there any reason why this doesnt work on majors browser?(Firefox 除外)

linux - 如何解析 CURL 命令结果的输出?