我在facebook html源代码中搜索一个特殊的“脚本”节点,该节点看起来像
<script>require("TimeSlice").guard(function() ...
所以我试图找到它:
Element scriptNode = doc.select("script:contains(require)").first();
System.out.println(scriptNode);
但它一直返回null。代码有什么问题?
答案 0 :(得分:0)
你遇到了一个已知的Jsoup问题(见SCRIPT element should provide :text() behaviors)。
SCRIPT元素被视为数据,因此您无法依赖:contains
来匹配它们。
相反,请使用如下的解决方法:
Elements scriptNodes = doc.select("script");
for(Element scriptNode : scriptNodes) {
if (scriptNode.html().startsWith("require")) {
System.out.println(scriptNode);
}
}
scriptNode.html()
将返回匹配的脚本节点的内容。
在Jsoup 1.8.3上测试