作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图检查网页正文上的每个 html 标签,看看其中是否有文本。如果是这样,我想要打印该文本:
Document doc = Jsoup.connect(site).get();
Elements e = doc.body().getAllElements();
for (int i=0; i<e.size(); i++){
if(doc.body().child(i).hasText()){
System.out.println(doc.body().child(i).text());
}
}
以上可行,但不是我想要的。 child() 方法似乎不是细粒度的,因为它将多个“div 类”元素聚集在一起。如何以更细粒度的方式遍历 DOM 主体以查看每个标签的文本是什么?
提前谢谢您。
最佳答案
Document doc = Jsoup.connect(site).get();
doc.body().traverse(new NodeVisitor() {
@Override
public void head(Node node, int depth) {
if (node instanceof TextNode) {
TextNode tn = ((TextNode) node);
// Try to improve this filter for the nodes who contain
// texts with a whitespaces
if (tn.text().replaceAll("\\s*", "").length() > 0) {
System.out.println("Tag:" + tn.parent().nodeName()
+ ", text:" + tn.text());
}
}
}
@Override
public void tail(Node node, int depth) {
// Do Nothing
}
});
关于java - Jsoup 细粒度解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10333950/
在命令提示符下,当你按下插入按钮时,光标从细条变为粗条,表明它处于覆盖模式,当你再次按下它时,它又变细表明它处于插入模式有什么办法可以在 C# 中执行此操作吗? 编辑:我想知道是否有办法使光标变粗/变
RubyRogues 播客上有人曾经说过“学习 CoffeeScript,因为 CoffeeScript 编写的 javascript 比你更好。”抱歉,不记得是谁说的... 所以,我采用了一个非常简
我是一名优秀的程序员,十分优秀!