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



这是我试图解析的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>

这是我用来解析它的代码;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&nbsp。但它永远不会被抓住,有人能告诉我我做错了什么吗?

使用选择器尝试此实现:

 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:"
}

然而,当解析文本节点时,并且该节点是&nbsp;实体,则通过将该元素上的.text()调用为#160 ASCII char来将其转换。非打断空间与正常空间不同。不间断空格在ISO-8859-*Windows-1252中为0xA0160 decimal,在Unicode中为U+00A0(在UTF-8中编码为0xC2 0xA0)。所以这取决于你的角色编码。

最新更新