Jsoup 无法 select facebook html 源的脚本节点

Jsoup fail to select script node for facebook html source

我正在 facebook html 源中搜索一个特殊的 "script" 节点,该节点看起来像

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

所以我试图找到它:

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

但它 returns 一直为空。代码有什么问题?

您遇到了 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()将return匹配脚本节点的内容。

在 Jsoup 1.8.3 上测试