专栏首页上善若水PJS001 PhantomJ简易入门

PJS001 PhantomJ简易入门

PJS001 PhantomJ简易入门

PhantomJS是什么

PhantomJS是一个基于webkit的JavaScript API,使用QtWebKit作为它核心浏览器的功能,使用webkit来编译解释执行JavaScript代码。任何你可以在基于webkit浏览器做的事情,它都能做到。它不仅是个隐形的浏览器,提供了诸如CSS选择器、支持Web标准、DOM操作、JSON、HTML5、Canvas、SVG等,同时也提供了处理文件I/O的操作,从而使你可以向操作系统读写文件等。PhantomJS的用处可谓非常广泛,诸如前端无界面自动化测试(需要结合Jasmin)、网络监测、网页截屏等。

延伸链接

PhantomJS官方地址

PhantomJS官方API

PhantomJS官方示例

PhantomJS GitHub

##安装

打开我的电脑->右键属性->高级系统设置->高级标签->环境变量,在系统变量里找到Path,将phantomjs.exe所在目录路径添加到环境变量里。

第一个小程序HelloWorld

编辑新建hello.js文件,输入内容如下:

//a phantomjs example
var page = require('webpage').create();  
phantom.outputEncoding="gbk";
page.open("http://www.cnblogs.com/front-Thinking", 
    function(status) {
        if ( status === "success" ) {
            console.log(page.title);
        } else {
            console.log("Page failed to load.");
        }
    phantom.exit(0);
    } ); 

在cmd命令行下运行

λ phantomjs.exe   D:\Users\Frank\Desktop\PhantomJS\hello.js
front-Thinking - 博客园

代码注释:

  1. //webpage是phantomjs的核心模块之一,它给用户提供了访问、操作、选择web文档的接口
  2. 运行page.open函数,其中第一个参数是你要访问的url,第二个参数是一个回调函数。在回调函数里我们检查了下返回的状态,如果是success那么我们就将浏览的url制定文档的title打印出来,如你所见,如果不是那么打印文档加载出错。最后一行退出phantomjs执行环境。

PhantomJS核心API

  1. webpage:如你所见,它的作用主要是提供了一套可以访问和操作web文档的核心方法,包括操作DOM、事件捕获、用户事件模拟等等。
  2. system: 该模块提供了一些与操作系统相关的接口,例如访问操作系统信息、访问系统环境变量、接受命令行参数等等与程序执行相关的系统信息。
  3. fs:即FileSystem。熟悉NodeJS的朋友都知道,NodeJS也内建了相关的核心模块。fs提供了执行文件I/O操作的标准接口,如读写文件、删除文件等。它使得你持久化一些文件(如logfile等)变得非常容易。
  4. webserver:如其名字一样,你可以基于它来实现自己的webserver,用来处理请求并且执行PhantomJS代码等。

PhantomJS命令参数的用法:

PhantomJS的命令格式如下:

phantomjs [switches] [options] [script] [argument [argument [...]]]

其中,各种参数都是可选的。例如我们第一个程序的执行命令如下:

phantomjs hello.js

打开debug模式(该模式用于开发,可提供必要提示信息):

phantomjs --debug=yes hello.js

设置cookie路径:

phantomjs --cookie-file=cookie.txt hello.js

参考链接

  1. PhantomJS快速入门

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 015android初级篇之传感器的简单使用

    要监控传感器的原始数据,你需要实现 SensorEventListener 接口的 onAccuracyChanged() 和onSensorChanged()...

    上善若水.夏
  • 049android初级篇之Android Studio aar包的使用

    在Android Studio中对一个自己库进行生成操作时将会同时生成.jar与.aar文件。 分别存储位置:

    上善若水.夏
  • 005工具及环境之nmap一览

    Nmap (“Network Mapper(网络映射器)”) 是一款开放源代码的 网络探测和安全审核的工具。它的设计目标是快速地扫描大型网络,当然用它扫描单个 ...

    上善若水.夏
  • 更新Faster-RCNN代码到最新版的caffe

    因为CuDNN函数接口更新的原因,以前用低版本写的项目在新版本的CuDNN环境下编译就会出问题。例如,py-faster-rcnn代码在最新版的CuDNN6上面...

    王云峰
  • 玩转Redis持久化

    本文将通过下面内容的介绍,希望能够让大家更全面、清晰的认识这两种持久化方式,同时理解这种保存数据的思路,应用于自己的系统设计中。

    大愚
  • 腾讯云安全白皮书:2015年上半年安全威胁大起底

    日前,腾讯云首次发布《腾讯云安全白皮书》(以下简称“白皮书”),其中披露了《腾讯云安全运营数据报告(2015年上半年)》。 数据报告显示,2015年1月至7月 ...

    腾讯数据中心
  • Java7 新特性 —— java.nio.file 文件操作

    自 Java7 开始,Java 终于简化了文件读写的基本操作,新增了 java.nio.file 库,通过与 Java8 新增的 stream 结合可以使得文件...

    全栈程序员站长
  • 程序员拯救乐坛?OpenAI用“逆天”GPT2.0搞了个AI音乐生成器

    基于深度神经网络进行语音合成、音乐风格迁移,正成为不少致力于“让人人成为音乐家”的研究人员所追求的事情。像此前我们报道的微软小冰作词又作曲,AI帮清华博士写说唱...

    AI科技大本营
  • 消费复苏!“618大促”用云量创新高

    ? 消费复苏!“618大促”用云量创新高 后疫情期首次大促,“618”主要电商用云量翻倍 直播卖货流量半年涨5倍  腾讯云支持“618大促”资源创新高 ? ?...

    腾讯云视频
  • 原码、反码、补码的产生、应用以及优缺点有哪些?

    后来在生活中为了表示“欠别人钱”这个概念,就从无符号数中,划分出了“正数”和“负数”正如上帝一挥手,从混沌中划分了“白天”与“黑夜”为了表示正与负,人们发明...

    shengjk1

扫码关注云+社区

领取腾讯云代金券