getElementById不适用于Facebook消息

时间:2017-07-13 20:29:13

标签: jsoup

出于某种原因,在解析https://touch.facebook.com/messages

并使用getElementById("threadlist_rows"),即使ID肯定存在,我也会收到空。

它在html()输出中,它可以在线尝试jsoup,我可以毫无问题地获得root等其他ID。

同样的方法一直在为其他页面工作,唯一的区别是我可以看到有很多其他元素的id在正文中有threadlist_row_的前缀。

getElementsByClass("aclb")等其他各种选择器似乎也没有返回此页面的完整列表。

任何人都可以解释这个问题吗?

1 个答案:

答案 0 :(得分:1)

在你的情况下,Jsoup不会像你期望的那样工作。加载页面后,JavaScript函数将呈现标识为threadlist_rows的元素。 Jsoup不解释任何JavaScript代码 - 它只适用于静态HTML。你可以"模拟"通过调查页面源(Ctrl + U)或暂时关闭Web浏览器中的JavaScript,Jsoup看到了什么。

考虑使用替代方案,例如:

  • PhantomJS http://phantomjs.org/),一个带有JavaScript API的无头WebKit脚本。它对各种Web标准提供快速和本机支持:DOM处理,CSS选择器,JSON,Canvas和SVG。

您还可以尝试执行本主题中提到的事情:https://stackoverflow.com/a/39174441/2194470(使用PhantomJS下载HTML并使用Jsoup操作DOM结构)。这可能是您的最佳选择。希望它有所帮助:)