方案1 使用CuptCaptphp
能够参考 百度文库的帖子 http://jingyan.baidu.com/article/37bce2be0e31a01003f3a25b.html 上边附有下载地址html
命令行测试 C:\Users\kai>D:\CutyCapt\CutyCapt.exe --url=https://www.baidu.com --out=D:\CutyCapt\1.pnglinux
测试结果: 会有图片没法加载的状况,遇到js错误失败web
PHP代码测试服务器
<?php //------------------------------------------------------- // PARKSON SOFTWARE // // Author: HuiChao.Wang <HuiChao.Wang@inpor.com> // DateTime: 2016/11/2 11:47 //------------------------------------------------------- //set_time_limit(0); header("Content-Type:text/html; charset=utf-8"); //设置抓取网址 $url = "https://www.baidu.com"; $url = "http://epaper.gansudaily.com.cn/gsrb/html/2016-11/02/content_304772.htm"; //设置图片名称(以当前时间戳命名) $time = time(); //设置图片输出地址 $outdir = 'D:/CutyCapt/' . $time . ".png"; //CutyCapt绝对路径 $path = 'D:/CutyCapt/CutyCapt.exe'; //命令 $cmd = "$path --url=$url --out=$outdir"; //执行命令 exec($cmd);
测试结果:测试的时候用的是一个页面测试的,过程当中网页加载的提示一直在转,说明一直结束不了。可是图片是已经生成好的。网络
方案2 使用phantomjsapp
相比方案1此方案图片未丢失异步
下载地址 http://phantomjs.org/download.html测试
首先须要写一段js代码网站
var page = require('webpage').create(); var args = require('system').args; var url = args[1]; var filename = args[2]; page.open(url, function () { page.render(filename); phantom.exit(); });
命令行测试 C:\Users\kai>D:\phantomjs211\bin\phantomjs.exe D:\phantomjs211\my\test2.js http://www.jb51.net d:/sss.png
测试结果:若是网页有js错误会致使解析失败
PHP代码
<?php //------------------------------------------------------- // PARKSON SOFTWARE // // Author: HuiChao.Wang <HuiChao.Wang@inpor.com> // DateTime: 2016/11/2 11:47 //------------------------------------------------------- set_time_limit(0); header("Content-Type:text/html; charset=utf-8"); //执行程序路径 $exe_path = "D:/phantomjs211/bin/phantomjs.exe"; //js路径 $js_path = "D:/phantomjs211/my/test2.js"; //网页地址 $url = "http://news.163.com/16/1101/21/C4QM1O9C000189FH.html"; //设置图片名称(以当前时间戳命名) $image_path = 'D:/' . time() . '.png'; //命令 $cmd = "$exe_path $js_path $url $image_path"; //执行命令 exec($cmd);
测试结果:若是网页有js错误会致使解析失败
方案3 使用wkhtmltpdf/wkhtmltoimage
下载地址 http://download.gna.org/wkhtmltopdf/0.12/0.12.3.2/wkhtmltox-0.12.3.2_msvc2013-win64.exe
命令行测试 C:\Users\kai>D:\wkhtmltopdf\bin\wkhtmltoimage.exe http://news.163.com/16/1101/21/C4QM1O9C000189FH.html D:/jb51.png
测试结果:若是网页有js错误会有错误提示,不过能正常生成图片
若是网页有视频会显示一块黑色区域
PHP测试
与于方案一、方案2同样,就是执行cmd命令
方案3在服务器(我用的本身电脑作服务器)安装360的状况下会有下图的提示 ps:云主机未测试
在iis服务器执行exec 可能会出现500错误
缘由1:disabl_functions 禁止了 exec方法
缘由2:应用无权限,设置方法 而后进入IIS --》 应用程序池 --》 找到你对应的程序池 --》 右键属性 --》 标识--》修改 网络服务 为 本地服务
方案3也能够生成pdf 使用wkhtmltopdf.exe
注意:有些网站访问速度慢或者其余缘由致使生成图片时超时,php会报出500的错误,你们能够用异步的方式处理生成图片的代码,好比:fsockopen
$fp = fsockopen($host, $port, $errno, $errstr, $timeout); $out = "POST ".$path." HTTP/1.1\r\n"; $out .= "host:".$host."\r\n"; $out .= "content-length:".strlen($query)."\r\n"; $out .= "content-type:application/x-www-form-urlencoded\r\n"; $out .= "connection:close\r\n\r\n"; $out .= $query; fputs($fp, $out); fclose($fp);
以上软件均有linux 版本,须要咋linux使用的 自行下载安装