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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PTA 浙大版《C语言程序设计实验与习题指导(第3版)》题目集(参考代码)

    PTA 浙大版《C语言程序设计实验与习题指导(第3版)》题目集(参考代码)C语言PTA练习题浙大版《C语言程序设计实验与习题指导(第3版)》题目集寒假在家,想着吧PTA上的C语言练习题写写,博主初学C语言,其中有些代码写的可能有些令人费解甚至是让人笑话,但是这也是一个练习的过程。注:其中有些题的代码参考了其他人。题目号题目名实验1-1HelloWorld!实验1-2WelcometoYou!实验1-3ProgramminginCisfun!实验1-4输出三角形实验1-5输出菱形图案实验1-6输出带

    2022年10月26日
  • R语言plot参数_plot函数参数

    R语言plot参数_plot函数参数最近用R语言画图,plot函数是用的最多的函数,而他的参数非常繁多,由此总结一下,以供后续方便查阅。plot(x,y=NULL,type="p",xlim=NULL,ylim=NULL,log="",main=NULL,sub=NULL,xlab=NULL,ylab=NULL,ann=par("ann"),axes=TRUE,fra…

    2022年10月15日
  • [原创] 仿滴滴出行打车APP定位导航,增加RFID认证、海外版、司机证件号码识别功能

    [原创] 仿滴滴出行打车APP定位导航,增加RFID认证、海外版、司机证件号码识别功能这是我自己做的一个仿滴滴打车的Android出行项目,主要针对滴滴等出行平台一直饱受质疑的“人车不符”问题,以及当前越发火热的或计划和出海战略,给出行项目增加了下面几个功能:1.RFID识别验证功能:在司机证件或者车内识别硬件嵌入RFID识别芯片,乘客使用手机读取到芯片信息,并且通过网络发送到出行平台数据库进行验证(我用JNI加了一个C语言的MD5加密算法对识别到的信息进行了加密)。如果不是合规的“人”或“车”,则不能完成订单并向平台或监管单位汇报当前位置。

    2022年7月24日
  • WinHttp 类封装「建议收藏」

    WinHttp 类封装「建议收藏」头文件#pragmaonce#include<Windows.h>#include<stdio.h>#include<string>usingstd::string;usingstd::wstring;boollibHttp_Get(wstringwszServerName,WORDnServerPort,wstringw…

    2022年7月27日
  • JavaScript高级编程

    JavaScript高级编程

    2021年11月13日
  • android 分区丢失,分区数据恢复

    android 分区丢失,分区数据恢复作者:SelenaKomez5月23,2018上更新总结:硬盘分区被删除或丢失?如何取回已删除或丢失的分区?数据恢复软件将帮助您恢复数据,即使在Windows或Mac计算机上删除或丢失分区。执行分区数据恢复不需要任何技术技能。硬盘分为一个或多个逻辑分区,以便更好地进行资源管理,并根据用户要求将数据分布在不同的位置。这些逻辑分区称为分区,并给出了某些独立硬盘协调工作的错觉。但是,计算机分…

    2022年8月11日

发表回复

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

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