phantomjs入门使用

phantomjs入门使用PhantomJS是一个命令行工具。确保您熟悉命令提示符或PowerShell(在Windows上)或终端(在macOS和Linux上)的使用。这个指令假设PhantomJS已经安装并放置在路径的某个地方(例如,Windows用户请参阅本教程)。官网:https://phantomjs.org/中文网:http://wenku.kuryun.com/docs/phantomjs/index.html一、下载地址:https://phantomjs.org/download.html选择对应操

大家好,又见面了,我是你们的朋友全栈君。

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159375.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux设置ip默认,Linux设置ip地址与默认网关[通俗易懂]

    linux设置ip默认,Linux设置ip地址与默认网关[通俗易懂]1.设置ip地址打开终端,取得root权限(sudosu)。输入命令:#ifconfigeth0192.168.0.20netmask255.255.255.0详解:ifconfig—设置ip的命令eth0—要设置的网卡,可以只输入ifconfig查看已安装网卡192.168.0.20—预设置的IP值。netmask255.255.255.0—子网掩…

    2022年5月27日
    54
  • 联想笔记本电脑键盘亮了屏幕不亮_联想笔记本电脑键盘为什么不亮

    联想笔记本电脑键盘亮了屏幕不亮_联想笔记本电脑键盘为什么不亮现在不管是工作还是学习,已经离不开电脑了,它的出现带给我们极大的方便,笔记本以它小巧灵活的体积更是受到了很多学生和商务人士的喜欢,可是市面上有那么多品牌的笔记本,应该怎么正确做出选择呢?下面小编就为大家带来联想笔记本电脑开机键亮但是黑屏,联想笔记本键盘没反应?联想笔记本电脑开机键亮但是黑屏1、若遇到联想笔记本电脑开机键亮但是黑屏的情况,可以拆卸掉笔记本背面的电池,只用电源适配器连接电脑,尝试开机一…

    2022年9月20日
    0
  • mac如何使用快捷键,使得窗口最大化/最小化(完)[通俗易懂]

    mac如何使用快捷键,使得窗口最大化/最小化

    2022年4月7日
    242
  • 目标检测的目的_小目标检测问题

    目标检测的目的_小目标检测问题我们在评价一个目标检测算法的“好坏”程度的时候,往往采用的是pascalvoc2012的评价标准mAP。网上一些资料博客参差不齐,缺乏直观易懂的正确说明。希望这篇博文能够给大家一点帮助。mAP历史目标检测的mAP计算方式在2010年的voc上发生过变化,目前基本都是采用新的mAP评价标准。(我有个小疑问就是明明是2010年修改的,但是貌似现在大家都称这种计算方式为2012)所…

    2022年10月12日
    0
  • 旅行者 问题_航空公司在浪费金钱,这就是旅行者的意义所在「建议收藏」

    旅行者 问题_航空公司在浪费金钱,这就是旅行者的意义所在「建议收藏」旅行者问题(WanttoreceiveBuy/Sell/Holdinyourinbox?Signuphere.)(是否希望在收件箱中收到购买/出售/持有?在这里注册。)WelcometoBuy/Sell/Hold,Marker’sweeklynewsletterthat’s100%businessintelligenceand0%invest…

    2022年7月13日
    14
  • CSDN第一篇博客日记

    CSDN第一篇博客日记CSDN注册很久了,但一直都没来弄,因为开始刚刚学C和C++,许多的东西进来看不懂,觉得这还不是我的一片天地,而转眼又过了两年了,现在的我已经是大二快读完了,我学的是信息与计算科学专业,学了C和C++,现在正在学习数据结构,感觉有点难,看不懂~ 有个时候碰到问题总是自己不能解决,在QQ问问里和百度里搜吧答案找一个只能是一个,过后又忘记了,想把自己的问题以及学习过程记录下来,也想把自己得到的好的解

    2022年4月29日
    28

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号