使用带有jsoup Selector的通配符

时间:2013-09-11 06:34:33

标签: java html dom css-selectors jsoup

我正在浏览不同的网页以使用jsoup进行处理,我想要访问的页面中的部分以这种方式进行格式化:

<section class="featured_name_tabs options9">

通常,要做到这一点,我会做以下事情:

document.select("section.featured_name_tabs.options9")

但是,我注意到class属性末尾的数字实际上发生了变化,所以我现在需要的是(最后用asterix):

document.select("section.featured_name_tabs.options*")

^但显然这不起作用。现在我发现字符串的结尾并不总是相同,我如何选择该元素?谢谢!

1 个答案:

答案 0 :(得分:0)

您无法使用选择器语法直接执行此操作。你可以通过查看selector documentation(它支持属性和文本的前缀/后缀/中缀/正则表达式匹配但不支持类)来看到这一点,并注意到属性Evaluator内部子类包含正则表达式,班级Evaluator没有。

您必须按类名循环选择较少的选择结果:

for (Element e : document.select("section.featured_name_tabs"))
    for (String s : e.className().split(" ")) //multiple classes space-separated
        if (s.startsWith("options"))
            doSomething(e);