PhantomJS初识

来源:互联网 发布:php登陆后显示用户名 编辑:程序博客网 时间:2024/05/20 04:10

安装PhantomPhantomJS

安装下载地址自行选择对应版本下载解压即可建议维PhantomJS设置环境变量。在其中的下载包中,有一个example文件集,里面有很多官方的例子可供学习和参考。

安装完成后在命令行输入:phantomjs -v 如果正常显示版本号,证明安装配置成功。

页面加载

var page = require('webpage').create()//创建一个page对象//通过page对象打开网址page.open('http://www.baidu.com/',function(status){console.log("Status: " + status);if(status === "success"){//如果请求相应态维success,则通过render方法将当前的页面保存为baidu.png    page.render('baidu.png');}phantom.exit();});

在命令行中运行phantomjs pageload.js
输出内容维Status:success,并在当前目录下生成对网页的截图

网页速度测试

//使用webpage模块创建一个page对象,使用system模块获取系统对象var page = require('webpage').create(),    system = require('system'),    t,address;//保存时间和传入参数if (system.args.length === 1){    console.log("Usage:loadspeed.js <some URL>");    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 ' + system.args[1]);        console.log('loading time ' + t + 'msec');    }    phantom.exit();});

代码评估

var url = 'http://www.baidu.com/';var page = require('webpage').create();page.open(url, function(status){    var title = page.evaluate(function(){        return document.title;    });    console.log('Page title is ' + title);    phantom.exit()});

屏幕捕捉

由于phantomJS使用的是WebKit内核,一个真正的布局和渲染引擎,它可以捕捉一个页面的屏幕截图。另外,PhantomJS可以渲染网页上的元素,所以它不仅可以用于HTML和CSS的内容转换,还可以用于SVG和画布。PhantomJS不仅可以将网页保存为png格式,还可以保存为jpg,gif和pdf格式,只需将.png改成.pdf

PhantomJS还可以对师徒进行缩放和裁剪,主要用到page对象中两个非常重要的属性;viewportSize和clipRect.

  • viewportSuze:视区的大小,其作用可以看作将打开的浏览器进行缩放。

  • clipRect:在视区中裁剪曲线,需要四个参数,前两个是基准点,后两个参数是宽高

    var page = require('webpage').create();page.viewportSize = { width:1024, height: 768 };page.clipRect = { top :0, left: 0, width: 512, height:256 };page.open('http://www.baidu.com/',function(status){console.log("Status: " + status);if(status === "success"){    page.render('baidu.png');}phantom.exit();});

网络监控

因为PhantonJS允许检验网络流量,因此它适合分析网络行为和性能,实现对网络的监听。当像远程服务器发送请求时,可以使用onResourceRequested和onResourceReceived两个方法嗅探所有的资源请求和响应。

var url = 'http://www.baidu.com/';var page = require('webpage').create();page.onResourceRequested = function(request){    console.log('Request ' + JSON.stringify(request, undefined, 4));};page.onResourceReceived = function(response){    console.log('Receive ' + JSON.stringify(request, undefined, 4));};page.open(url);

页面自动化

PhantonJS可以加载和处理一个网页,非常适合自动化处理,PhantomJS中标准JavaScript的DOM操作和CSS操作选择器都是生效的。

var page = require('webpage').create()console.log('The default user agent is ' + page.settings.userAgent);page.settings.userAgent = 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0';page.open('http://movie.mtime.com/108737/', function(status){    if(status !== 'success')    {        console.log('Unable to access network');    }    else    {        var ua = page.evaluate(function(){            return document.getElementById('ratingRegion').textContent;        });        console.log(ua);    }    phatom.exit();});
原创粉丝点击