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 一些简单实用的更多相关文章

  1. jQuery的几种简单实用效果

    许久未分享博客,或许已生疏. 闲来无事, 分享几个jQuery简单实用的效果案例 不喜勿喷... 1.页面常用的返回顶部 <!DOCTYPE html> <html lang=&qu ...

  2. 经验分享:10个简单实用的 jQuery 代码片段

    尽管各种 JavaScirpt 框架和库层出不穷,jQuery 仍然是 Web 前端开发中最常用的工具库.今天,向大家分享我觉得在网站开发中10个简单实用的 jQuery 代码片段. 您可能感兴趣的相 ...

  3. 简单实用的PHP防注入类实例

    这篇文章主要介绍了简单实用的PHP防注入类实例,以两个简单的防注入类为例介绍了PHP防注入的原理与技巧,对网站安全建设来说非常具有实用价值,需要的朋友可以参考下   本文实例讲述了简单实用的PHP防注 ...

  4. php简单实用的操作文件工具类(创建、移动、复制、删除)

    php简单实用好用的文件及文件夹复制函数和工具类(创建.移动.复制.删除) function recurse_copy($src,$dst) {  // 原目录,复制到的目录 $dir = opend ...

  5. 基于Bootstrap简单实用的tags标签插件

    http://www.htmleaf.com/jQuery/ jQuery之家 自由分享jQuery.html5和css3的插件库 基于Bootstrap简单实用的tags标签插件

  6. C#_简单实用的翻页

    简单实用的生成翻页HTML辅助类 C# using System.Text; namespace ClassLibrary { /// <summary> /// /// </sum ...

  7. Selenium + PhantomJS + python 简单实现爬虫的功能

    Selenium 一.简介 selenium是一个用于Web应用自动化程序测试的工具,测试直接运行在浏览器中,就像真正的用户在操作一样 selenium2支持通过驱动真实浏览器(FirfoxDrive ...

  8. 简单实用的Windows命令(一)

    前几天新买了一台笔记本电脑,使用了一下几个简单的查看电脑配置的命令,觉得非常的不错,在此记录一下 一:运行命令的方式有两种 1:使用快捷键WIN+R,然后在弹出的“运行”对话框中输入对应的命令 2:在 ...

  9. 简单实用的Windows命令(二)

    昨天简单的记录了几个非常简单实用的Windows命令,不过我又想起来还有两个我在实际的工作中也是经常用到的命令——PING和IPCONFIG,不过我在工作中的使用都是非常简单的,用PING命令检测对应 ...

随机推荐

  1. 深入理解CSS过渡transition

    × 目录 [1]定义 [2]过渡属性 [3]持续时间[4]延迟时间[5]时间函数[6]多值[7]阶段[8]触发[9]API 前面的话 通过过渡transition,可以让web前端开发人员不需要jav ...

  2. tornado api 简单模板

    # 安装 pip insatll tornado # 主文件 web_server.py #!/usr/bin/env python # encoding: utf-8 import tornado. ...

  3. Java读取txt文件,计算2011年9月份的通话时间

    public class test2 { /** * @param args * @throws IOException */ public static void main(String[] arg ...

  4. 网页JS获取当前地理位置(省市区)

    眼看2014又要过去了,翻翻今年的文章好像没有写几篇,忙真的或许已经不能成为借口了,在忙时间还是有的,就像海绵里的水挤挤总会有滴.真真的原因是没有学习过什么新的技术,工作过程中遇到的问题也不是非常难并 ...

  5. 【.NET进阶】函数调用--函数栈

    原文:http://www.cnblogs.com/rain-lei/p/3622057.html 函数调用大家都不陌生,调用者向被调用者传递一些参数,然后执行被调用者的代码,最后被调用者向调用者返回 ...

  6. java操作AJAX

    1,get方式的AJAX function sendAjaxReq() { //1,创建ajax引擎 XMLHttpRequest对象 var req = new XMLHttpRequest() | ...

  7. 通过电脑(计算机)下载google play的应用的方法

    手机上安装GOOGLE PLAY很麻烦,经常不成功.于是采用电脑下载APK的方法. 网上传说的下载chrome的插件,然后获取DEVICE ID的方法,经过试用,一直无法获得DEVICE ID. 经过 ...

  8. Spring学习笔记之Bean的一些属性设置

    1.beans 里边配置default-init-method="shunge",有这个方法的会执行,没有也不会报错 2.beans 里边配置default-destroy-met ...

  9. 阿里 Java面试 知识点

    摘自: http://blog.csdn.net/wtyvhreal/article/details/45291835 =================================== 基础知识 ...

  10. [转]详述DHCP服务器的三种IP分配方式

    DHCP就是动态主机配置协议(Dynamic Host Configuration Protocol),它的目的就是为了减轻TCP/IP网络的规划.管理和维护的负担,解决IP地址空间缺乏问题.这种网络 ...