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

时间:2013-12-11 23:46:01

标签: java jsoup

我正在从网站解析一些表格,特别是我试图按类名提取以下单元格:

<td class=" text_bold">example</td>

我使用标准Jsoup选择器来提取带有类的标记,如下所示:

Elements cells = doc.select("td.text_bold");

问题是还有其他单元也被选中,因为它们同时具有text_bold类和另一个类,例如:

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

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

1 个答案:

答案 0 :(得分:2)

我以前在这种情况下陷入了困境。但是,我使用的技巧是:

  • 首先将所有元素作为Elements使用目标类:for your context "text_bold"
  • 然后遍历每个元素,比较他们的类名,可以使用Element.className()函数获得。如果类名是"aClass bClass"格式,则此函数将其作为一个类名返回。

例如:

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

             }