搜尋
首頁web前端js教程PhantomJS快速入門教學(伺服器端的 JavaScript API 的 WebKit)_javascript技巧

PhantomJS 是一個基於 WebKit 的伺服器端 JavaScript API。它全面支援web而不需瀏覽器支持,其快速,原生支持各種Web標準: DOM 處理, CSS 選擇器, JSON, Canvas, 和 SVG。 PhantomJS 可用於 頁面自動化 , 網路監測 , 網頁截圖 ,以及 無介面測試 等。

PhantomJs官網:http://phantomjs.org/
GitHub:https://github.com/ariya/phantomjs/wiki/Quick-Start

一、安裝

安裝套件下載位址:http://phantomjs.org/download.html ,包含Windows ,Mac OS,Linux版本,自行選擇對應版本下載解壓縮即可( 為方便使用,可自已為phantomjs設定環境變數),其中有一個example資料夾,裡面有許多已經寫好的程式碼可供使用。本文假設phantomjs已經安裝好並已設定了環境變數。

二、使用

Hello, World!

新建一個包含下面兩行腳本的文字檔:

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

將檔案另存為 hello.js ,然後執行它:

phantomjs hello.js

輸出結果為:Hello, world!

第一行將會在終端機上印出字串,第二行 phantom.exit 將退出運作。
在該腳本中呼叫 phantom.exit 是非常重要的,否則 PhantomJS 將根本不會停止。

腳本參數 – Script Arguments

Phantomjs如何傳遞參數呢?如下圖 :

複製程式碼 程式碼如下:

phantomjs examples/arguments.js foo bar baz

其中的foo, bar, baz就是要傳遞的參數,如何取得呢:

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

它將輸出 :

0: foo
1: bar
2: baz

頁面載入 – Page Loading

透過建立一個網頁對象,一個網頁可以被加載,分析和渲染。

下面的腳本將範例頁面物件最簡單的用法,它載入 example.com 並且將它儲存為一張圖片, example.png 。

var page = require('webpage').create();
page.open('http://example.com', function () {
 page.render('example.png');
 phantom.exit();
});

由於它的這個特性,PhantomJS 可以用來 網頁截圖 ,截取一些內容的快照,比如將網頁、SVG存成圖片,PDF等,這個功能很牛X。

接下來的 loadspeed.js 腳本載入一個特殊的URL (不要忘了http協定) 並且計量載入該頁面的時間。

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 time ' + t + ' msec');
 }
 phantom.exit();
});

在命令列運行該腳本:

phantomjs loadspeed.js http://www.google.com
它輸出像下面的東西:

Loading http://www.google.com Loading time 719 msec

程式碼運算 – Code Evaluation

要想在網頁的上下文中對JavaScript 或 CoffeeScript 進行運算,使用 evaluate() 方法。程式碼是在「沙箱」中運行的,它沒有辦法讀取在其所屬頁面上下文之外的任何JavaScript物件和變數。 evaluate() 會傳回一個對象,然而它只限制於簡單的物件並且不能包含方法或閉包。

這有一個範例來顯示網頁標題:

var page = require('webpage').create();
page.open(url, function (status) {
 var title = page.evaluate(function () {
  return document.title;
 });
 console.log('Page title is ' + title);
});

任何來自於網頁並且包括來自 evaluate() 內部程式碼的控制台訊息,預設不會顯示的。要重寫這個行為,使用 onConsoleMessage 回呼函數,前一個範例可以改寫成:

var page = require('webpage').create();
page.onConsoleMessage = function (msg) {
 console.log('Page title is ' + msg);
};
page.open(url, function (status) {
 page.evaluate(function () {
  console.log(document.title);
 });
});

DOM操作 – DOM Manipulation

由於腳本好像是一個在網頁瀏覽器上運行的一樣,標準的DOM腳本和CSS選擇器可以很好的工作。這使得PhantomJS適合支援各種 頁面自動化任務 。

下面的 useragent.js 將讀取 id 為myagent的元素的 textContent 屬性:

var page = require('webpage').create();
console.log('The default user agent is ' + page.settings.userAgent);
page.settings.userAgent = 'SpecialAgent';
page.open('http://www.httpuseragent.org', function (status) {
 if (status !== 'success') {
  console.log('Unable to access network');
 } else {
  var ua = page.evaluate(function () {
   return document.getElementById('myagent').textContent;
  });
  console.log(ua);
 }
 phantom.exit();
});

上面範例同樣提供了一種自訂 user agent 的方法。

使用JQuery及其他類別庫:

var page = require('webpage').create();
page.open('http://www.sample.com', function() {
 page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() {
  page.evaluate(function() {
   $("button").click();
  });
  phantom.exit()
 });
});

網路請求及回應 – Network Requests and Responses

將一個頁面從一台遠端伺服器請求一個資源的時候,請求和回應都可以透過 onResourceRequested 和 onResourceReceived 回呼方法追蹤到。範例 netlog.js

var page = require('webpage').create();
page.onResourceRequested = function (request) {
 console.log('Request ' + JSON.stringify(request, undefined, 4));
};
page.onResourceReceived = function (response) {
 console.log('Receive ' + JSON.stringify(response, undefined, 4));
};
page.open(url);

獲取如何把該特性用於HAR 輸出以及基於YSlow的性能分析的更多信息,請參閱 網絡監控頁面

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Python学习:如何在系统中安装pandas库Python学习:如何在系统中安装pandas库Jan 09, 2024 pm 04:42 PM

快速入门:Python安装pandas库的方法,需要具体代码示例一、概述Python是一种广泛使用的编程语言,它拥有强大的开发生态系统,其中包括许多实用的库。而pandas是其中一款非常受欢迎的数据分析库,它提供了高效的数据结构和数据分析工具,使得数据处理和分析变得更加简单。本文将介绍如何在Python中安装pandas库,并提供相应的代码示例。二、安装Py

快速入门Mojs动画库:爆炸模块指南快速入门Mojs动画库:爆炸模块指南Sep 02, 2023 pm 11:49 PM

我们通过学习如何使用mojs为HTML元素添加动画来开始本系列。在第二个教程中,我们继续使用Shape模块制作内置SVG形状的动画。第三个教程介绍了使用ShapeSwirl和stagger模块对SVG形状进行动画处理的更多方法。现在,我们将学习如何使用Burst模块以突发形式制作不同SVG形状的动画。本教程将取决于我们在前三个教程中介绍的概念。如果您还没有阅读过它们,我建议您先阅读它们。创建基本连拍动画在创建任何突发动画之前,我们需要做的第一件事是实例化Burst对象。之后,我们可以指定不同属性

快速入门:使用Go语言函数实现简单的音频流媒体服务快速入门:使用Go语言函数实现简单的音频流媒体服务Jul 29, 2023 pm 11:45 PM

快速入门:使用Go语言函数实现简单的音频流媒体服务引言:音频流媒体服务在今天的数字化世界中越来越受欢迎,它可以让我们通过网络直接播放音频文件,而无需进行完整的下载。本文将介绍如何使用Go语言函数来快速实现一个简单的音频流媒体服务,以便您能更好地理解和使用这一功能。第一步:准备工作首先,您需要安装Go语言的开发环境。您可以从官方网站(https://golan

快速入门:使用Go语言函数实现简单的图像识别功能快速入门:使用Go语言函数实现简单的图像识别功能Jul 30, 2023 pm 09:49 PM

快速入门:使用Go语言函数实现简单的图像识别功能在如今的科技发展中,图像识别技术已经成为一个热门的话题。作为一种快速高效的编程语言,Go语言具备了实现图像识别功能的能力。本文将通过使用Go语言函数实现简单的图像识别功能,给读者提供一个快速入门的指南。首先,我们需要安装Go语言的开发环境。可以在Go语言官方网站(https://golang.org/)上下载适

推荐五款Go语言常用框架,让您快速入门推荐五款Go语言常用框架,让您快速入门Feb 24, 2024 pm 05:09 PM

Title:快速上手:五款Go语言常用框架推荐近年来,随着Go语言的流行,越来越多的开发者选择采用Go进行项目开发。Go语言以其高效、简洁和性能优越等特点受到了广泛关注。在Go语言开发中,选择适合的框架能够提高开发效率和代码质量。本文将介绍五款Go语言常用框架,并附上代码示例,帮助读者快速上手。Gin框架Gin是一个轻量级的web框架,具有快速高效的特点,

学习使用五种Kafka可视化工具的快速入门学习使用五种Kafka可视化工具的快速入门Jan 31, 2024 pm 04:32 PM

快速入门:五种Kafka可视化工具的使用指南1.Kafka监控工具:简介ApacheKafka是一种分布式发布-订阅消息系统,它可以处理大量的数据,并提供高吞吐量和低延迟。由于Kafka的复杂性,需要使用可视化工具来帮助监控和管理Kafka集群。2.Kafka可视化工具:五大选择KafkaManager:KafkaManager是一个开源的Web界

在Scrapy爬虫中使用Selenium和PhantomJS在Scrapy爬虫中使用Selenium和PhantomJSJun 22, 2023 pm 06:03 PM

在Scrapy爬虫中使用Selenium和PhantomJSScrapy是Python下的一个优秀的网络爬虫框架,已经被广泛应用于各个领域中的数据采集和处理。在爬虫的实现中,有时候需要模拟浏览器操作去获取某些网站呈现的内容,这时候就需要用到Selenium和PhantomJS。Selenium是模拟人类对浏览器的操作,让我们可以自动化地进行Web应用程序测试

快速入门:使用Go语言函数实现简单的数据可视化折线图展示快速入门:使用Go语言函数实现简单的数据可视化折线图展示Jul 30, 2023 pm 04:01 PM

快速入门:使用Go语言函数实现简单的数据可视化折线图展示引言:在数据分析和可视化的领域中,折线图是一种常用的图表类型,可以清晰地展示数据随时间或其他变量的变化趋势。本文将介绍如何使用Go语言函数来实现一个简单的数据可视化折线图展示,并且提供相关的代码实例。一、准备工作在开始之前,需要确保以下几个条件:安装Go语言环境,并设置好相关的环境变量。安装必要的依赖库

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)