如何使用Jsoup判断HTML表是否有空单元格()?

时间:2014-11-10 04:59:29

标签: java html jsoup

这是我要解析的HTML。我想使用实际上有信息的所有内容,而不仅仅是& nbsp,但由于某些原因,我似乎无法检查这些列中的信息是否为空。

<tbody>
<tr>
     <td class=""><a href="/website.com">Cal83</a></td>
     <td class="">List </td>
     <td>07/19/12</td>
</tr>
<tr>
     <td>&nbsp;</td>
     <td>&nbsp;</td>
     <td>&nbsp;</td>
</tr>
</tbody>

这是我用来尝试解析它的代码。它可以得到它,直到它到达&amp; nbsp线。我试图确保除了空格或空字符串之外,该行还有其他内容。

    Elements rows = calendarPage.getElementsByTag("tr");
        for (Element row : rows) {
            Elements td = row.getElementsByTag("td");
            if (td.get(0).hasText()){      //&nbsp
                System.out.println(td.get(0).text());
                Element link = td.get(0).select("a").first();
            }
        }

我尝试使用.hasText()就像我在那里展示一样,检查它是否是空格,空字符串,null,我甚至尝试检查它是否是\ u \&amp; nbsp。但它永远不会被抓住,有人能告诉我我做错了什么吗?

1 个答案:

答案 0 :(得分:2)

使用选择器尝试此工具:

 Element table = doc.select("table").get(0); //select the first table.
 Elements rows = table.select("tr");
 for (int i = 1; i < rows.size(); i++) { 
    Element row = rows.get(i);
    Elements cols = row.select("td");

    System.out.println(cols.get(i).text().equals("\u00a0")); // to check "&nbsp:"
}

然而,在解析文本节点时,这个conatins &nbsp;实体通过在此元素上调用.text()来转换为#160 ASCII char。 不间断的空间与普通空间不同。非中断空格0xA0160 decimal ISO-8859-*Windows-1252,Unicode中为U+00A0(在UTF-8中,它被编码为{{ 1}})。所以它取决于你的字符编码。