Javascript HtmlUnit加载Facebook照片
所以,我有一个项目,我需要从个人资料中获取照片 我可以导航到个人资料的照片页面,但我相信JavaScript没有加载 我目前正在使用HtmlUnit,但如果你知道另一个Java API会有帮助的话,我洗耳恭听 基本上,当我在普通浏览器中查看Facebook时,它将加载所有页面,我可以检查元素 检查时,有一个名为fbStarGrid的div和一些其他修改器。此div包含用户配置文件的所有图像 当我使用HTMLUnit时,我找不到div。我让它将整页XML打印到一个文件中,我发现div被注释掉了。我相信这意味着Javascript从未运行过来加载内容 在浏览了很多关于SO的javascript帮助之后,我发现了一些有助于调试但似乎无法解决问题的东西 我做的第一件事是创建JavaScriptJobManager的实例。我用它来看看有多少JavaScript是不完整的。在等待了一段时间(10秒以上)后,它说还有3个JS作业未完成。经过很长一段时间(约60秒),它说有2个JS作业未完成 我不知道那些JS工作有什么问题 我在页面加载时收到一条关于application/ld+json未运行的警告,但我不相信网站的某部分与照片有关 我能做些什么来强制JS运行吗?是否有一项工作被卡住而无法继续下一项工作 我还想知道这是否是页面没有重新同步的问题 我尝试了两种与此相关的解决方案: 将AjaxController设置为NicelyResynchronizingAjaxController() 有人建议创建一个自定义控制器来强制同步Javascript HtmlUnit加载Facebook照片,javascript,java,ajax,facebook,htmlunit,Javascript,Java,Ajax,Facebook,Htmlunit,所以,我有一个项目,我需要从个人资料中获取照片 我可以导航到个人资料的照片页面,但我相信JavaScript没有加载 我目前正在使用HtmlUnit,但如果你知道另一个Java API会有帮助的话,我洗耳恭听 基本上,当我在普通浏览器中查看Facebook时,它将加载所有页面,我可以检查元素 检查时,有一个名为fbStarGrid的div和一些其他修改器。此div包含用户配置文件的所有图像 当我使用HTMLUnit时,我找不到div。我让它将整页XML打印到一个文件中,我发现div被注释掉了。我
webClient.setAjaxController(new AjaxController(){
@Override
public boolean processSynchron(HtmlPage page, WebRequest request, boolean async)
{
return true;
}
});
这两个似乎都不影响页面
如果这不是适合这份工作的图书馆,还有其他想法吗?我需要在linux服务器上运行无头/无欺诈。Java是首选,但我可以在必要时切换语言。不要刮Facebook,因为他们不允许。使用API@WizKid嗯,我来看看。我认为API只适用于使用个人资料作为帐户的游戏。
webClient.setAjaxController(new AjaxController(){
@Override
public boolean processSynchron(HtmlPage page, WebRequest request, boolean async)
{
return true;
}
});