HtmlUnit加载Facebook照片

时间:2017-01-04 19:02:12

标签: javascript java ajax facebook htmlunit

所以,我有一个项目,我需要从个人资料中获取照片。

我可以导航到个人资料的照片页面,但我相信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是首选,但我可以根据需要切换语言。

0 个答案:

没有答案