这是我试图解析的HTML。我想使用所有真正有信息的东西,而不仅仅是 ,但由于某种原因,我似乎无法检查这些列中的信息是否为空。
<tbody>
<tr>
<td class=""><a href="/website.com">Cal83</a></td>
<td class="">List </td>
<td>07/19/12</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
</tbody>
这是我用来解析它的代码;nbsp行。我正在努力确保这行除了空白或空字符串之外还有其他内容。
Elements rows = calendarPage.getElementsByTag("tr");
for (Element row : rows) {
Elements td = row.getElementsByTag("td");
if (td.get(0).hasText()){ // 
System.out.println(td.get(0).text());
Element link = td.get(0).select("a").first();
}
}
我试着使用.hasText(),就像我在那里展示的那样,检查它是否是空白、空字符串、null,我甚至试着检查它是否为\u 。但它永远不会被抓住,有人能告诉我我做错了什么吗?
使用选择器尝试此实现:
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 " :"
}
然而,当解析文本节点时,并且该节点是
实体,则通过将该元素上的.text()
调用为#160 ASCII
char来将其转换。非打断空间与正常空间不同。不间断空格在ISO-8859-*
、Windows-1252
中为0xA0
或160 decimal
,在Unicode中为U+00A0
(在UTF-8
中编码为0xC2 0xA0
)。所以这取决于你的角色编码。