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 上测试
我正在 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 上测试