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();});
- PhantomJS初识
- phantomjs
- phantomjs
- phantomjs
- PhantomJS
- PhantomJS
- phantomjs
- phantomjs
- PhantomJS
- phantomjs
- 安装phantomjs
- python phantomjs
- 推荐 phantomjs
- phantomjs note
- phantomjs 简介
- phantomjs入门教程
- 安装phantomjs
- phantomjs使用说明
- 利用Kibana图表化Elasticsearch中的数据
- Ubuntu16.04禁用ipv6
- psql: could not connect to server: No such file or directory&&PGHOST
- 算法训练 字符串变换
- CEF3之js与c++交互问题解决资料
- PhantomJS初识
- Android Studio Opengl Cmake 配置 编译 jni c++ 调用opengl
- EasyX中loadimage函数和putimage函数如何调用
- redis启动报错解决
- Java Set
- C语言练习题(7)
- ◆Vjudge◆◇广度优先搜索◇ Eight
- python模块调用时,相对路径问题
- 冒泡排序法C语言代码