如屏幕截图所示,jsoup在每个其他子节点之前/之后插入空TextNode。有没有办法把它关掉?或者我做错了什么?这些存在有什么原因吗?
Jsoup 1.8.2如果它有帮助。
答案 0 :(得分:1)
有没有办法将其关闭?
不,因为这是Jsoup HTML解析器的正常行为。
或者我做错了什么?
调用的方法可能是整个问题的根本原因。
是否有任何理由存在?
每次在HTML文档中找到文本时,它都会在最终的HTML对象树(TextNode
)中显示为Document
。
如果HTML文档的作者在元素之前放置换行符,Jsoup将为此换行符创建一个TextNode。
(...)childnodes()。size()不再返回正确的数据
我认为问题的核心在于此。而不是调用Node#childnodes()
,而是调用Element#children()
方法。此方法将为您过滤掉空TextNode
。
或者,您可以使用以下代码段来获取数据:
Document doc = ...
Elements tds = doc.select("table tr > td");
if (tds.size() == 0) {
// No td found ...
}
// ...
Jsoup 1.8.2