所以,我有一个项目,我需要从个人资料中获取照片。
我可以导航到个人资料的照片页面,但我相信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()
webClient.setAjaxController(new NicelyResynchronizingAjaxController());
有人建议创建一个强制同步的自定义控制器。
webClient.setAjaxController(new AjaxController(){
@Override
public boolean processSynchron(HtmlPage page, WebRequest request, boolean async)
{
return true;
}
});
这些似乎都不影响该页面。
如果HTMLUnit不是正确的工作库,还有其他任何想法吗?我需要这个无头/无法在Linux服务器上运行。 Java是首选,但我可以根据需要切换语言。