phantomjs本身和python没啥关系,snap_shot库的实现其实也就是命令行的重定向(本身带了一个snap_shot),但有的机子(做作业的时候已经有6个人遇到同样的问题了。。。),所以找了一个更简单功能单一的js文件。
var page = require('webpage').create();
var args = require('system').args;
var pageW = 1024;
var pageH = 768;
page.viewportSize = {
width: pageW,
height: pageH
};
var url = args[1];
var filename = args[2];
page.open(url, function(status) {
if (status !== 'success') {
console.log('Unable to load ' + url + ' !');
phantom.exit();
} else {
window.setTimeout(function() {
page.clipRect = { left: 0, top: 0, width: pageW, height: pageH };
page.render(filename);
phantom.exit();
}, 1000);
}
});
使用方法很简单,phantomjs.exe snap.js xxx.html yyy.png,可以直接在cmd中运行,运行完后就会生成网页截图。这个xxx.html可以是自己的网页文件也可以是URL。
在python中就可以通过调用subprocess中的Popen函数来使用cmd命令。
subprocess.Popen("phantomjs.exe snap.js xxx.html yyy.png", shell=True, stderr=subprocess.STDOUT)
这样直接运行就可以了。(phantomjs要放在源程序目录下,或者设置环境变量,snap.js也放在源程序目录下)