phantomjs的使用

2019-10-08 15:35 来源:未知

2.常用的内置对象

1.system:获得系统操作对象,富含命令行参数、phantomjs系统设置等新闻

var system=require('system');

2.webpage:获取操作dom或web网页的靶子,通过它可以张开网页、接收网页内容、request、response参数,其为最宗旨指标。提供了一套能够访谈和操作web文书档案的为主措施,满含操作DOM、事件捕获、客商事件模拟等等。

var page = require('webpage');

3.fs:获取文件系统对象,通过它能够操作操作系统的文本操作,满含read、write、move、copy、delete等。

var fs = require('fs'); 

4.webserver:能够运行一个web服务。近期有十一个冒出乞求的限定;任何其余诉求都将排队等待。

var webserver = require('webserver');

3.常用API

www.308877.com,1.经过page对象展开url链接,并得以回调其宣称的回调函数,其回调发生的火候为该U哈弗L被彻底张开完成,即该UCRUISERL所引发的央求项被全体加载完,但ajax诉求是与它的加载成功与否没有关系
page.open(url,function (status) {})
2.当page.open调用时,回首先奉行该函数,在此可以预置一些参数或函数,用于末端的回调函数中
page.onLoadStarted = function() {}
3.page的所要加载的财富在加载进程中,出现了各样战败,则在此回调解和管理理
page.onResourceError = function(resourceError) {}
4.page的所要加载的财富在倡导呼吁时,都得以回调该函数
page.onResourceRequested = function(requestData, networkRequest) {}
5.page的所要加载的能源在加载进程中,每加载多个相关能源,都会在此先做出响应,它一定于http尾部分, 其主干回调对象为response,能够在此获得此次央求的cookies、userAgent等
page.onResourceReceived = function(response) {}
6.欲在进行web网页时,打字与印刷一些出口信息到调整台,则足以在此回调展现。
page.onConsoleMessage = function (msg) {}
7.phantomjs是绝非分界面包车型大巴,所以对alert也是心余力绌间接弹出的,故phantomjs以该函数回调在page在施行进度中的alert事件
page.onAlert = function(msg) {}
8.当page.open中的url,它本身(不富含所引起的别的的加载财富)出现了那一个,如404、no route to web site等,都会在此回调展现。
page.onError = function(msg, trace) {}
9.当page.open张开的url或是该url在张开进度中基于该U奥迪Q5L进行了跳转,则可在此函数中回调。
page.onUrlChanged = function(targetUrl) {}
10.当page.open的指标UMuranoL被真正开发后,会在调用open的回调函数前调用该函数,在此能够张开内部的翻页等操作
page.onLoadFinished = function(status){}
11.在所加载的web page内部施行该函数,像翻页、点击、滑动等,均可在当中实施
page.evaluate(function(){})
12.将眼下page的现状渲染成图片,输出到钦命的文本中去。
page.render("")

4.例子

1.出口内容。新建hello.js。

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

命令行输入phantomjs hello.js。程序输出了 Hello,world!程序第三句话终止phantom 的试行。

2.赢得输入的参数。新建arguments.js.

"use strict";
var system = require('system');
if (system.args.length === 1) {
    console.log('Try to pass some args when invoking this script!');
} else {
    system.args.forEach(function (arg, i) {
            console.log(i + ': ' + arg);
    });
}
phantom.exit();

命令行输入phantomjs arguments.js https://www.baidu.com 20180106 jie
出口结果:

0: phantomjs/arguments.js
1: https://www.baidu.com
2: 20180106
3: jie

里头第三个值是当下js文件的门径

3.页面加载,并回到页面标题

"use strict";
phantom.outputEncoding="utf-8";
var page = require('webpage').create();
page.open("http://blog.csdn.net", function(status) {
        var title = page.evaluate(function() {
        return document.title;
    });
    console.log('Page title is ' + title);
    phantom.exit();
});

回到的结果:

Page title is CSDN首页-全球最大中文IT社区

4.创建web服务

var webserver = require('webserver');
var server = webserver.create();
var service = server.listen('127.0.0.1:9999', function(request, response) {
  response.statusCode = 200;
  response.write('<html><body>Hello!</body></html>');
  response.close();
});

5.安装代理

"use strict";
var page = require('webpage').create(),
    system = require('system'),
    host, port, address;

if (system.args.length < 4) {
    console.log('Usage: openurlwithproxy.js <proxyHost> <proxyPort> <URL>');
    phantom.exit(1);
} else {
    host = system.args[1];
    port = system.args[2];
    address = system.args[3];
    phantom.setProxy(host, port, 'manual', '', '');
    page.open(address, function (status) {
        if (status !== 'success') {
            console.log('FAIL to load the address "' +
                address + '" using proxy "' + host + ':' + port + '"');
        } else {
            console.log('Page title is ' + page.evaluate(function () {
                return document.title;
            }));
        }
        phantom.exit();
    });
}

PhantomJS是三个无分界面包车型大巴,可脚本编制程序的WebKit浏览器引擎。它原生支持多样web 规范:DOM 操作,CSS选取器,JSON,Canvas 以及SVG,同期也提供了拍卖文件I/O的操作,进而使您能够向操作系统读写文件等。PhantomJS的用处可谓十二分广泛,诸如互联网监测、网页截屏、不必要浏览器的 Web 测量试验、页面访谈自动化等。

1.安装

phantomjs是截然开源的软件,能够一贯下载源码编写翻译后装置,也能够直接下载官方网址络编译好的公文安装。

各平台下的安装文件包地址:

windows

Mac os

Linux

下载安装包完毕后,直接解压就能够。安装到位之后命令行输入
phantomjs -v 后一旦出现版本号即为设置成功。

TAG标签:
版权声明:本文由澳门国际银河备用网址发布于www.308877.com,转载请注明出处:phantomjs的使用