如何利用CutyCapt插件截图登陆后的网页?

LongMarkCai 2017-12-15 10:19:06
公司项目需要把页面的iframe中的BI报表进行截图,考虑有两种方式:一是使用html2canvas,这个由于页面太多量太大就pass掉了;另外一种方法是使用CutyCapt插件进行截图,这种办法遇到一个不能截取登录过后加载的动态数据的问题,下面是代码。





// 要截图的网页URl
$url = "http://localhost:37799/WebReport/tst.html";
// 设置图片输出地址
$outdir = 'D:/12_11_images/'.time().'.png';
if (!file_exists(substr($outdir,0,15))) {
mkdir($outdir,0777,true);echo '创建文件夹成功';
}
// CutyCapt.exe的绝对路径
$path = 'D:/CutyCapt.exe';

// delay 等待秒 maxwait:不要等待(秒)
$cmd = "$path url=$url delay=60000 maxwait=90000 out=$outdir";
// 执行执行命令
if (exec($cmd) !== false) {
echo '图片抓取成功!'.'
'.'图片保存到路径:'.$outdir.'
'.'图片来源URL:'.$url;
}else{
echo '系统错误';
}

url得到的网页内容如图:




而截取的图片却是:




因为这个链接是做的单点登录,通过这个url访问他可以直接登录进去的,不需要人工在浏览器先去访问一次。然而上面的代码执行后给我截图出来的就是一张空白图片,里面只有一行“正在加载数据中...”,我想可能页面没有加载完,按照这个插件官方的说法是加delay这个延迟等待参数,设了1分钟没有任何效果,在exec函数前面延迟是没用的,他这个地方相当于直接调起cmd命令执行,执行时才会去访问这个url。

有没有用过这个插件的大牛,想请教下这个插件的延迟参数对于这种需要登录的网页都是怎么使用过的,有没有大牛遇到过这种情况,还望能给在下指点一二,在下不胜感激。
...全文
407 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2018-01-17
精选
  • 打赏
  • 举报
回复
显然 CutyCapt 不是截取浏览器输出的画面,而是通过读取页面数据自己生成画面的 因此你也要给 CutyCapt 赋予登录授权信息(估计很困难) 但是,你的服务端应该是能模拟出登录状态的,这样就可转发要截图页面的数据给 CutyCapt 了
LongMarkCai 2018-01-17
  • 打赏
  • 举报
回复
,,,,,,,,,,,,,,,,,,,,,,,,
老虎爱代码 2017-12-18
  • 打赏
  • 举报
回复
你这个和插件没关系吧http://localhost:37799/WebReport/tst.html 这个路径需要授权才能访问的 所以你get到的永远都是正在加载, 你需要把这个路径的授权打开 其他用户可以访问 或者吧这个内容保存到本地 然后再去获取内容!

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧