Javascript javajsoup:提取所有文本
我有以下代码。 doc.body.text()语句不输出样式和脚本标记中的文本。我阅读了.text()函数代码,它查找TextNode的所有实例。Jsoup中的TextNode是什么 为什么脚本文本不包含在.text()输出中Javascript javajsoup:提取所有文本,javascript,java,html,parsing,jsoup,Javascript,Java,Html,Parsing,Jsoup,我有以下代码。 doc.body.text()语句不输出样式和脚本标记中的文本。我阅读了.text()函数代码,它查找TextNode的所有实例。Jsoup中的TextNode是什么 为什么脚本文本不包含在.text()输出中 String contex=“styledivscript段落正文”; 文档doc=Jsoup.parse(上下文,“UTF-8”); 字符串text=doc.body().text(); System.out.println(“测试文本:”+文本); 输出:parag
String contex=“styledivscript段落正文”;
文档doc=Jsoup.parse(上下文,“UTF-8”);
字符串text=doc.body().text();
System.out.println(“测试文本:”+文本);
输出:paragraphbody为此,您需要使用
org.jsoup.select.Elements
来解析标签,如
为什么脚本文本不包含在.text()输出中
因为script
和style
有数据,而不是文本
要从script
的数据中获取数据,请使用getElementsByTag
Elements scriptElements = doc.getElementsByTag("script");
并通过getWholeData
for (Element element :scriptElements ){
for (DataNode node : element.dataNodes()) {
System.out.println(node.getWholeData());
}
System.out.println("-------------------");
}
根据,对于样式
或脚本
标记被视为dataNode而不是textNode
.text()函数包含哪些元素?所谓元素,我指的是div、p、h等。@user8788828除了
style
、script
和CData
之外的所有元素。
scripts
787878
Elements scriptElements = doc.getElementsByTag("script");
for (Element element :scriptElements ){
for (DataNode node : element.dataNodes()) {
System.out.println(node.getWholeData());
}
System.out.println("-------------------");
}
void insert(Token.Character characterToken) {
Node node;
// characters in script and style go in as datanodes, not text nodes
final String tagName = currentElement().tagName();
final String data = characterToken.getData();
if (characterToken.isCData())
node = new CDataNode(data);
else if (tagName.equals("script") || tagName.equals("style"))
node = new DataNode(data);
else
node = new TextNode(data);
currentElement().appendChild(node); // doesn't use insertNode, because we don't foster these; and will always have a
stack.
}