Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过php执行脚本后获取html页面_Javascript_Php_Phantomjs - Fatal编程技术网

Javascript 通过php执行脚本后获取html页面

Javascript 通过php执行脚本后获取html页面,javascript,php,phantomjs,Javascript,Php,Phantomjs,我做了很多搜索。。。我试过一些方法。。 有一点是,html内容是在脚本执行之后出现的 我使用了不同方法的phantomJS 1-检查文档。准备就绪 结果:未加载脚本,因此返回卸载的html 2-设置超时太长 结果:未加载脚本,因此返回卸载的html 所以,虽然我是安卓开发者,没有太多jquery knowlodge使用chrome开发者控制台查看页面代码。。。我看到所有应该加载的数据都在带有窗口的脚本中。articleDetailData 此外,我还找到了加载数据内容的函数 ('#templat

我做了很多搜索。。。我试过一些方法。。 有一点是,html内容是在脚本执行之后出现的

我使用了不同方法的phantomJS

1-检查文档。准备就绪

结果:未加载脚本,因此返回卸载的html

2-设置超时太长

结果:未加载脚本,因此返回卸载的html

所以,虽然我是安卓开发者,没有太多jquery knowlodge使用chrome开发者控制台查看页面代码。。。我看到所有应该加载的数据都在带有
窗口的脚本中。articleDetailData

此外,我还找到了加载数据内容的函数

('#templateArticleDetail').tmpl(data).appendTo('#articleDetailContainer');
没有时间参数,但在移动设备中它需要时间。但在代码中,我理解页面加载时应该复制到#articleDetailContainer

所以我的问题是 1-为什么文档就绪和高超时不返回加载的脚本页面和phantomJS 2-有没有办法解析脚本标记下的windows.data


如果我找不到任何简单的方法,将使用regex解析脚本

您可以使用PhantomJsCloud.com来完成此操作,尽管在下面的回答中,如果您想尝试使用自己的phantomjs.exe实例,我将尝试解释此过程。(披露:我写了《幻影云》)

PhantomJsCloud的文档如下:

1) 等待AJAX

使用PhantomJsCloud:只是一个普通请求,所有内容都会自动正确加载。以下是呈现为PNG的页面:

使用PhantomJs.exe:如果您自己做,则需要确保在渲染之前完成所有ajax资源请求。(请参阅网页onResourceReceived()api)

2) 解析windows.data

使用PhantomJsCloud:设置pageRequest.requestType=“script”,使用pageRequest.scripts执行脚本,并返回所需的数据。例如:


使用PhantomJs.exe:您需要使用或injectJs并加载一个脚本来进行解析,然后通过

将其发送回PhantomJs.exe代码。因此,如果一秒钟的超时确实显示了完整的内容,您是否尝试过增加超时?(试图确保它最终被加载)我不知道是谁引入了
文档。readyState
技巧,但以我的经验,它从未起过作用。使用10秒-30秒等你使用哪个PhantomJS版本?请注册到
OnConsolleMessage
onError
onResourceError
onResourceTimeout
事件()。可能有错误。最新的一个,2.0,我不认为有错误…因为它打印的文本加载脚本。。。但在空闲时间会测试并返回给你…测试并给出错误代码:301。描述:协议“关于”是未知的解释和努力。从早上到晚上都在使用PhantomJs,发布的消息说这个可执行库太慢了,在你的评论尝试reguler表达式之前,因为网站上有脚本文件中的数据。。。我得到了你想要的。。。而且速度更快。。
  page.open(address, function (status) {
    if (status !== 'success') {
        console.log('Unable to load the address!');
        phantom.exit();
    } else {
        window.setTimeout(function () {
            var htmlContent = page.evaluate(function () {
       return document.getElementsByClassName('hsaalicc-text').textContent;
    });

    console.log(htmlContent);

        }, 1000); // Change timeout as required to allow sufficient time 
    }
});
('#templateArticleDetail').tmpl(data).appendTo('#articleDetailContainer');