Phantomjs 一些简单实用
Phantomjs是一个基于webkit的服务器端JavaScirpt API。它全面支持web而不需要浏览器支持,并且原生支持web的各种标准:DOM处理,CSS选择器,JSON,Canvas和SVG。可以用于页面自动化、网络检测、网页截屏、无界面测试等。
1、使用
新建一个hi.js文件,里面写入js脚本,并且以phantom.exit();结尾, 执行DOS命令:phantomjs hi.js即可执行文件内脚本内容。
2、参数处理
参考phantomjs安装目录下examples中的arguments.js,DOS命令:phantomjs examples/arguments.js foo bar baz
它将输出 :
0: foo
1: bar
2: baz
3、页面截图
参考代码(将请求www.baidu.com网站并将截图保存成baidu.png):
var page = require('webpage').create();
page.open('http://www.baidu.com', function () {
page.render('html/baidu.png');
phantom.exit();
});
4、Cookie处理
var page = require('webpage').create();
var fs = require('fs');
phantom.addCookie({
'name' : 'province',
'value': 'provinceName%22%3A%22%u5317%u4EAC',
'domain': 'baidu.com'
});
phantom.addCookie({
'name' : 'addrDetail',
'value': '%7B%22detail%22%3A%22%u5317%u4EAC%22%2C%22detailId%22%3A2%2C%22detailCode%22%3A110000%7D',
'domain': 'baidu.com'
});
page.open('http://www.baidu.com', function(status){
if(status !== 'success'){
console.log('Unable to post!');
}else{ // 将页面保存成本地文件,并将所有script脚本替换为空字符,
fs.write('html/baidu.html',page.content.replace(/<script\b[^>]*>([\s\S]*?)<\/script>/gm,""),'w');
}
phantom.exit();
});
5、文件处理
var filePath = 'test.js';//文件路径
var fs = require("fs");
//判断文件是否存在,是文件还是文件夹
if( fs.exists(filePath) && fs.isFile(filePath) ) {
var ins = fs.open(filePath, 'r');//打开文件
while(!ins.atEnd()) {//循环读取文件内容
var buffer = ins.readLine();//一行行的读取
console.log(buffer);
}
}
Phantomjs 一些简单实用的更多相关文章
- jQuery的几种简单实用效果
许久未分享博客,或许已生疏. 闲来无事, 分享几个jQuery简单实用的效果案例 不喜勿喷... 1.页面常用的返回顶部 <!DOCTYPE html> <html lang=&qu ...
- 经验分享:10个简单实用的 jQuery 代码片段
尽管各种 JavaScirpt 框架和库层出不穷,jQuery 仍然是 Web 前端开发中最常用的工具库.今天,向大家分享我觉得在网站开发中10个简单实用的 jQuery 代码片段. 您可能感兴趣的相 ...
- 简单实用的PHP防注入类实例
这篇文章主要介绍了简单实用的PHP防注入类实例,以两个简单的防注入类为例介绍了PHP防注入的原理与技巧,对网站安全建设来说非常具有实用价值,需要的朋友可以参考下 本文实例讲述了简单实用的PHP防注 ...
- php简单实用的操作文件工具类(创建、移动、复制、删除)
php简单实用好用的文件及文件夹复制函数和工具类(创建.移动.复制.删除) function recurse_copy($src,$dst) { // 原目录,复制到的目录 $dir = opend ...
- 基于Bootstrap简单实用的tags标签插件
http://www.htmleaf.com/jQuery/ jQuery之家 自由分享jQuery.html5和css3的插件库 基于Bootstrap简单实用的tags标签插件
- C#_简单实用的翻页
简单实用的生成翻页HTML辅助类 C# using System.Text; namespace ClassLibrary { /// <summary> /// /// </sum ...
- Selenium + PhantomJS + python 简单实现爬虫的功能
Selenium 一.简介 selenium是一个用于Web应用自动化程序测试的工具,测试直接运行在浏览器中,就像真正的用户在操作一样 selenium2支持通过驱动真实浏览器(FirfoxDrive ...
- 简单实用的Windows命令(一)
前几天新买了一台笔记本电脑,使用了一下几个简单的查看电脑配置的命令,觉得非常的不错,在此记录一下 一:运行命令的方式有两种 1:使用快捷键WIN+R,然后在弹出的“运行”对话框中输入对应的命令 2:在 ...
- 简单实用的Windows命令(二)
昨天简单的记录了几个非常简单实用的Windows命令,不过我又想起来还有两个我在实际的工作中也是经常用到的命令——PING和IPCONFIG,不过我在工作中的使用都是非常简单的,用PING命令检测对应 ...
随机推荐
- [DOS] Net Use
Please use following command for regist a login user. net use \\server\folder [password] /user:[use ...
- Null 与 “” 的区别
说明:很多人有时候对于 null 和 "" 不是很清楚,结合其他人的文章,今天做下解释. String str1 = null; str引用为空 String str2 = &qu ...
- js从一个函数中结束另一个函数的问题
等待通过事件监听结束另一函数的方法出炉…… 1.事件监听? 2.从a里把b函数全局定义一下,不推荐. function a(){ alert("a"); b=function(){ ...
- paip.powerdesign cdm pdm文件 代码生成器 java web 页面 实现
paip.powerdesign cdm pdm文件 代码生成器 java web 页面 实现 准备从pd cdm生成java web 页面...但是,ms无直接地生成软件.... 只好自己解析cdm ...
- MySQL分库分表总结参考
单库单表 单库单表是最常见的数据库设计,例如,有一张用户(user)表放在数据库db中,所有的用户都可以在db库中的user表中查到. 单库多表 随着用户数量的增加,user表的数据量会越来越大,当数 ...
- Java为什么能跨平台运行
因为它有虚拟机(JVM),JAVA程序不是直接在电脑上运行的,是在虚拟机上进行的,每个系统平台都是有自己的虚拟机(JVM),所以JAVA语言能跨平台. 1, java代码不是直接运行在CPU上,而是运 ...
- Java性能提示(全)
http://www.onjava.com/pub/a/onjava/2001/05/30/optimization.htmlComparing the performance of LinkedLi ...
- Ubuntu “无法获得锁”解决方案(E: 无法获得锁 /var/cache/apt/archive
Ubuntu “无法获得锁”解决方案(E: 无法获得锁 /var/cache/apt/archive 现象一: E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源 ...
- IrregularGridCollectionView处理不定宽度的标签cell
IrregularGridCollectionView处理不定宽度的标签cell 效果 源码 https://github.com/YouXianMing/UI-Component-Collectio ...
- 【转】編譯Ogre1.9 IOS Dependencies及Ogre Source步驟及相關注意事項…
http://makedreamvsogre.blogspot.tw/2014/01/ios-dependenciesogre-source.html 可能有人會想問我為什麼要自行編譯IOS Depe ...