Jsoup无法为facebook html源选择脚本节点

时间:2016-01-04 09:53:15

标签: jsoup

我在facebook html源代码中搜索一个特殊的“脚本”节点,该节点看起来像

<script>require("TimeSlice").guard(function() ...

所以我试图找到它:

Element scriptNode = doc.select("script:contains(require)").first();
System.out.println(scriptNode);

但它一直返回null。代码有什么问题?

1 个答案:

答案 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上测试