Java Jsoup:选择具有单个类的元素

Java Jsoup:选择具有单个类的元素,java,jsoup,Java,Jsoup,我正在解析网站中的一些表,具体来说,我正在尝试按类名提取以下单元格: <td class=" text_bold">example</td> 问题是,还有其他单元格也被选中,因为它们既有text\u bold类,又有另一个类,例如: <td class="text_bold text_align_left" valign="top" width="150">example</td> 示例 是否有一种简单的方法可以只过滤具有select()方法

我正在解析网站中的一些表,具体来说,我正在尝试按类名提取以下单元格:

<td class=" text_bold">example</td>
问题是,还有其他单元格也被选中,因为它们既有
text\u bold
类,又有另一个类,例如:

<td class="text_bold text_align_left" valign="top" width="150">example</td>
示例

是否有一种简单的方法可以只过滤具有
select()
方法中指定的单个类的元素

我以前在这种情况下摔倒过。然而,我使用的技巧是:

  • 首先将所有元素作为
    元素
    ,目标类:对于您的上下文
    “text\u bold”
  • 然后遍历每个元素,比较它们的类名,可以使用
    element.className()
    函数获得类名。如果类名为“aClass bClass”format,则此函数将其作为一个类名返回
例如:

Document doc = Jsoup.parse("<td class=\"text_bold text_align_left\" valign=\"top\" width=\"150\">example</td>
<td class=\" text_bold\">example</td>");
        Elements elms = doc.select("td.text_bold");
         for(Element e:elms)
             if(e.className().trim().equals("text_bold")) 
                             //^^^<--trim is required as, 
                            // their can be leading and trailing space 
             {
                 System.out.println(e.className());
                 // do my thing

             }
Document doc=Jsoup.parse(“示例
(例如“);
元素elms=doc.select(“td.text_bold”);
对于(元素e:榆树)
如果(e.className().trim().equals(“text_bold”))

//^^^试试
doc.select(“td[class='text\u bold'])
@Vulcan谢谢你的建议。似乎它应该与
[attribute=value]
一起使用,但它返回0个元素。在
文本\u bold
之前或之后是否有空格,但仍在类声明中?如果是这样,您可能希望对startsWith使用
^=
,对endsWith使用
$=
,或者如果空格在任意一侧和/或不一致,请使用regex选择器
~=
。谢谢,这是一个很好的解决方案。
Document doc = Jsoup.parse("<td class=\"text_bold text_align_left\" valign=\"top\" width=\"150\">example</td>
<td class=\" text_bold\">example</td>");
        Elements elms = doc.select("td.text_bold");
         for(Element e:elms)
             if(e.className().trim().equals("text_bold")) 
                             //^^^<--trim is required as, 
                            // their can be leading and trailing space 
             {
                 System.out.println(e.className());
                 // do my thing

             }