PhantomJS是一个基于webkit的Javascript API。它使用QtWebKit作为它核心浏览器的功能,使用webkit来编译解释执行JavaScript代码。你能理解它是个没有界面的浏览器,不仅支持Web标准、Dom操作,同时也提供处理文件I/O的操作。PhantomJS的用处十分广泛,网络监测、网页截屏、无需浏览器的 Web 测试、页面访问自动化等统统都可以用到它,和Selenium配合就可以抓取异步加载的网页内容了~接下来一起看看在京东云上如何快速使用吧。
一、安装
创建完云主机后,我们可以从官方下载二进制文件直接安装,根据不同的开发平台选择不同的包。
二、快速使用
到这里,可以开始我们的第一个PhantomJS程序了。编写第一个程序,当然是Hello World.新建文件helloworld.js,敲入以下代码,Ctrl+S保存:
console.log('Hello,world!');
phantom.exit();
命令行输入:
phantomjshelloworld.js
输出结果为:Hello,World! 在这里,phantom.exit();终止了 phantom 的执行,这句话切记不可漏,否则程序将永不会停止。
PhantomJS单独使用的场景不是很多,主要作为一个前端测试的组件用。我们先来看看PhantomJS的核心API
webpage:它的作用主要是提供了一套可以访问和操作web文档的核心方法,包括操作DOM、事件捕获、用户事件模拟等等。
system:该模块提供了一些与操作系统相关的接口,例如访问操作系统信息、访问系统环境变量、接受命令行参数等等与程序执行相关的系统信息。
fs:即FileSystem。熟悉NodeJS的朋友都知道,NodeJS也内建了相关的核心模块。fs提供了执行文件I/O操作的标准接口,如读写文件、删除文件等。它使得你持久化一些文件(如logfile等)变得非常容易。
webserver:如其名字一样,你可以基于它来实现自己的webserver,用来处理请求并且执行PhantomJS代码等。
我们先来试试页面加载 – Page Loading
通过创建一个网页对象,一个网页可以被加载,分析和渲染。下面的脚本将示例页面对象最简单的用法,它加载 example.com 并且将它保存为一张图片,example.png 。
varpage = require('webpage').create();
page.open('http://example.com',function () {
page.render('example.png');
phantom.exit();
});
可以看到,由于它的这个特性,PhantomJS 可以用来网页截屏 ,截取一些内容的快照,比如将网页、SVG存成图片,PDF等。
接下来的 loadspeed.js 脚本加载一个特殊的URL (不要忘了http协议) 并且计量加载该页面的时间。
varpage = require('webpage').create(),
system = require('system'),
t, address;
if(system.args.length === 1) {
console.log('Usage: loadspeed.js <someURL>');
phantom.exit();
}
t= Date.now();
address= system.args[1];
page.open(address,function (status) {
if (status !== 'success') {
console.log('FAIL to load the address');
} else {
t = Date.now() - t;
console.log('Loading time ' + t + ' msec');
}
phantom.exit();
});
在命令行运行该脚本:
phantomjsloadspeed.js http://www.google.com
它将输出像下面的东西:
Loadinghttp://www.google.com Loading time 719 msec
以上就是如何快速使用PhantomJS,篇幅有限,本期我们仅简单介绍了页面加载这一项操作,还有关于网络监听、代码运算、事件处理等各项操作,之后的几期我们会慢慢道来。点击【阅读原文】动手试试看吧!
关注京东云畅享云计算
版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《新手入门 | 如何快速使用PhantomJS》的版权归原作者「京东云」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458
文章来源: 阅读原文
京东云微信公众号:JD-jcloud
手机扫描上方二维码即可关注京东云微信公众号