📜  PhantomJS-示例(1)

📅  最后修改于: 2023-12-03 15:18:18.724000             🧑  作者: Mango

PhantomJS-示例

简介

PhantomJS 是一个基于静态网页的无界面浏览器,可以用于 web 页面自动化操作、屏幕截图、网络监测等多种领域。它采用 WebKit 作为渲染引擎,支持 Web 标准、CSS、JSON、Canvas、SVG 等,同时还支持多语言接口,如 Python、Java 等。

安装

在官网 http://phantomjs.org/ 中下载对应系统的安装包即可。如果需要进行 Python 等开发语言的开发,还需要根据对应语言的文档进行相关安装。

基本使用

PhantomJS 可以通过命令行进行调用,执行一些简单的操作。例如下面的代码片段演示了如何使用 PhantomJS 打开指定的 URL,将其页面内容保存到文件。

$ phantomjs save-webpage.js https://github.com/ github.html

save-webpage.js 内容如下:

var page = require('webpage').create(),
    system = require('system'),
    address, output, size;

// 检查输入参数
if (system.args.length < 3 || system.args.length > 5) {
    console.log('Usage: save-webpage.js <URL> <output-file> [width*height] [timeout]');
    phantom.exit(1);
}

address = system.args[1];
output = system.args[2];
page.viewportSize = { width: 1200, height: 800 };

// 可选参数:指定截图大小
if (system.args.length > 3) {
    size = system.args[3].split('*');
    page.viewportSize = { width: size[0], height: size[1] };
}

// 可选参数:指定超时时间
if (system.args.length > 4) {
    page.settings.resourceTimeout = system.args[4];
}

// 打开网页
page.open(address, function (status) {
    if (status !== 'success') {
        console.log('Unable to load the address!');
        phantom.exit(1);
    }

    window.setTimeout(function () {
        page.render(output);
        phantom.exit();
    }, 3000);
});
API 简介
WebPage

WebPage 用来打开和操作 Web 页面,提供 DOM 操作、事件响应、资源加载等功能。下面是一些常用方法的简介:

page.open(url[, options[, callback]])

// 执行 JavaScript 代码
page.evaluate(fn[, arg1, arg2, ...])

// 获取页面信息
page.content
page.title
page.url
page.viewportSize
page.clipRect
// ...

// 获取/设置网页对象属性(详见API参考)
page.property(name)
page.property(name, value)

// 注册事件监听器
page.onConsoleMessage

// 打印信息到控制台
console.log()
WebServer

WebServer 启动了 PhantomJS 自带的 HTTP 服务器,可以用来测试和分析 HTTP 请求。例如下面的示例代码创建了一个 HTTP 服务器,可以响应客户端的请求,并将请求的内容直接输出到控制台。

var server = require('webserver').create();

server.listen(8080, function (request, response) {
    console.log(JSON.stringify(request));
    response.statusCode = 200;
    response.write(request.url);
    response.close();
});
总结

PhantomJS 是一个非常强大的静态网页无界面浏览器,并且提供了多语言接口,可以让开发人员更加方便地进行自动化操作。在开发过程中,我们应该注意掌握 PhantomJS 的 API,以便能够更好地使用其提供的功能。