phantomjs入门使用

本文介绍PhantomJS的基本使用方法,包括下载安装、简单示例、加载网页并打印快照、测试网页加载速度等。此外还介绍了如何使用PhantomJS进行代码评审及更多高级应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PhantomJS是一个命令行工具。确保您熟悉命令提示符或PowerShell(在Windows上)或终端(在macOS和Linux上)的使用。
这个指令假设PhantomJS已经安装并放置在路径的某个地方(例如,Windows用户请参阅本教程)。

  • 官网:https://phantomjs.org/
  • 中文网:http://wenku.kuryun.com/docs/phantomjs/index.html

一、下载

地址:https://phantomjs.org/download.html

选择对应操作系统的下载即可,下载完成后需要添加到环境变量中,才能使用phantomjs命令

二、Hello World!

创建test.js文件,内容如下:

console.log('Hello, world!');
phantom.exit();

执行命令

> phantomjs test.js
Hello, world!

注意:phantom需要退出,不然会一直执行,所以需要在脚本文件尾加上phantom.exit()

三、加载网页打印快照

test.js修改如下:

var page = require('webpage').create();
page.open('https://www.baidu.com', function(status) {
  console.log("Status: " + status);
  if(status === "success") {
    page.render('./baidu-snapshoot.png');
  }
  phantom.exit();
});

上面的代码是尝试打开百度网站,成功返回:success 失败返回:fail。成功后会执行网站截图保存下来

四、测试加载网站的速度

test.js修改如下:

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();
});

执行命令

> phantomjs test.js https://www.baidu.com
Loading https://www.baidu.com
Loading time 1485 msec

五、代码评审

在可以沙盒模式下使用evaluate()方法返回简单的javascript对象,不支持函数或闭包

test.js修改下如:

phantom.outputEncoding="gb2312"; // 解决命令行乱码

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

执行命令

> phantomjs test.js
Page title is 百度一下,你就知道

如果想拦截console打印,需要使用onConsoleMessage回调

phantom.outputEncoding="gb2312";

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

执行命令

> phantomjs test.js
Page title is 每一个星球都有一个驱动核心,
每一种思想都有影响力的种子。
感受世界的温度,
年轻的你也能成为改变世界的动力,
百度珍惜你所有的潜力。
你的潜力,是改变世界的动力!


Page title is %c百度2021校园招聘简历投递:https://talent.baidu.com/external/baidu/campus.html color:red
Page title is 百度一下,你就知道

除了上面一些简单的示例,还需要探索使用PhantomJS进行页面自动化、网络监控、屏幕捕获和headless测试。官方也提供了一些写好的 示例 下载运行即可。

欢迎关注:https://www.fenxianglu.cn/
image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天空还下着雪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值