PhantomJS(http://phantomjs.org/)是一个服务器端的 JavaScript API 的 WebKit。其支持各种Web标准: DOM 处理, CSS 选择器, JSON, Canvas, 和 SVG等,可方便的应用于各种自动化的测试、屏幕捕获、网络监控等环境。
Windows版的PhantomJS安装比较简单,下面就说一个Linux版本的PhantomJS的安装及简单用法。
Linux版本安装有两种方法,一是下载对应系统的编译好的可执行文件使用,但可能会出现不能用的情况,这时就需要使用第二种,源码编译安装。
一、直接下载编译好的文件
直接到Bitbucket下载对应的压缩包(链接:https://bitbucket.org/ariya/phantomjs/downloads),例如我的是CentOS6.5 64位系统,下载的是phantomjs-1.9.8-linux-x86_64.tar.bz2,下载完成后解压,在 bin 目录内有编译好的 phantomjs 文件,直接用FTP等工具上传到服务器。
使用SSH登入服务器,给phantomjs加上执行权限chmod +x phantomjs,运行./phantomjs -h看能否显示帮助文档,报错的话可能就需要使用源码编译来安装了。
二、源码编译
首先去官网下载最新稳定版本的源码(链接:http://phantomjs.org/download.html),找到Linux下的Source Code下载,目前最新版本是2.0 直接下载
以下操作以CentOS为例,其它发行版大同小异
cd /usr/local/src
# 下载源码
wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.0.0-source.zip
# 解压源码,没有unzip命令的请使用yum install unzip 安装
unzip phantomjs-2.0.0-source.zip
# 安装编译环境
yum -y install gcc gcc-c++ make flex bison gperf ruby
openssl-devel freetype-devel fontconfig-devel libicu-devel sqlite-devel
libpng-devel libjpeg-devel
# 开始编译
cd phantomjs-2.0.0
./build.sh
编译操作耗时会比较长(可以大于半个小时),耐心等待完成。编译完成后会多出一个 bin 目录,里面有编译完成的 phantomjs 文件。
简单使用
如果是下载的源码,里面会有个example文件夹,我们使用其中的rasterize.js创建一个网站截图。没有这个文件的可以复制下载的代码并保存为rasterize.js。
var page = require('webpage').create(),
system = require('system'),
address, output, size;
if (system.args.length < 3 || system.args.length > 5) {
console.log('Usage: rasterize.js URL filename [paperwidth*paperheight|paperformat] [zoom]');
console.log(' paper (pdf output) examples: "5in*7.5in", "10cm*20cm", "A4", "Letter"');
console.log(' image (png/jpg output) examples: "1920px" entire page, window width 1920px');
console.log(' "800px*600px" window, clipped to 800x600');
phantom.exit(1);
} else {
address = system.args[1];
output = system.args[2];
page.viewportSize = { width: 600, height: 600 };
if (system.args.length > 3 && system.args[2].substr(-4) === ".pdf") {
size = system.args[3].split('*');
page.paperSize = size.length === 2 ? { width: size[0], height: size[1], margin: '0px' }
: { format: system.args[3], orientation: 'portrait', margin: '1cm' };
} else if (system.args.length > 3 && system.args[3].substr(-2) === "px") {
size = system.args[3].split('*');
if (size.length === 2) {
pageWidth = parseInt(size[0], 10);
pageHeight = parseInt(size[1], 10);
page.viewportSize = { width: pageWidth, height: pageHeight };
page.clipRect = { top: 0, left: 0, width: pageWidth, height: pageHeight };
} else {
console.log("size:", system.args[3]);
pageWidth = parseInt(system.args[3], 10);
pages as good an assumption as any
console.log ("pageHeight:",pageHeight);
page.viewportSize = { width: pageWidth, height: pageHeight };
}
}
if (system.args.length > 4) {
page.zoomFactor = system.args[4];
}
page.open(address, function (status) {
if (status !== 'success') {
console.log('Unable to load the address!');
phantom.exit(1);
} else {
window.setTimeout(function () {
page.render(output);
phantom.exit();
}, 200);
}
});
}
使用以下命令创建网站截图(注意其中的文件路径,请自行修改为你的phantomjs和rasterize.js的路径
1
./phantomjs ../example/rasterize.js http://blog.icewingcc.com ./icewingcc.png
PhantomJS还可以用于网络监控、自动化等功能,而且JS文件的内容还可以根据需要自行修改。具体的使用方法请参考官方网站的介绍,以及example文件夹内示例的说明。
荒野乱斗国际版 (BrawlStars)最新版本v56.274
下载一波超人内置修改器菜单版 安卓版v1.0.2
下载敢达决战官方正版 安卓版v6.7.9
下载敢达决战 安卓版v6.7.9
下载继承了一座戏园子无限声望铜钱版 内置菜单最新版v1.7
继承了一座戏园子折相思版是游戏的破解版本,在该版本中为玩家提
山河半世橙光清软金手指版 无限鲜花v3.24
山河半世是一款超级好玩的橙光恋爱游戏,在游戏中玩家们需要扮演
蓬莱手游折相思版 安卓版v1.0.0
蓬莱免广告版是游戏的修改版本,在该版本中为玩家去除了广告,玩
当红影后橙光游戏破解版2025 最新版v1.0
当红影后橙光破解版是一款超级好玩的娱乐圈题材的橙光游戏,在这
忽然成了万人迷清软完结版 无限鲜花版v12.15
忽然成了万人迷破解版是一款非常好玩的男性向橙光游戏,在有一天