検索
ホームページウェブフロントエンドjsチュートリアルPhantomJS クイック スタート チュートリアル (サーバーサイド JavaScript API WebKit)_JavaScript スキル

PhantomJS は、WebKit に基づくサーバーサイド JavaScript API です。ブラウザーのサポートを必要とせずに Web を完全にサポートし、高速でさまざまな Web 標準 (DOM 処理、CSS セレクター、JSON、Canvas、SVG) をネイティブにサポートします。 PhantomJS は、ページ自動化、ネットワーク監視、Web ページのスクリーンショット、インターフェイスレス テストなどに使用できます。

PhantomJs 公式ウェブサイト: http://phantomjs.org/
GitHub:https://github.com/ariya/phantomjs/wiki/クイックスタート

1. インストール

インストール パッケージのダウンロード アドレス: http://phantomjs.org/download.html (Windows、Mac OS、Linux バージョンを含む) 対応するバージョンを選択してダウンロードして解凍できます (便宜上、 phantomjs の環境変数を設定できます)。これには、使用するために既に記述されたコードが多数含まれるサンプル フォルダーがあります。この記事では、phantomjs がインストールされ、環境変数が設定されていることを前提としています。

2.

を使用します。

こんにちは、世界!

次の 2 行のスクリプトを含む新しいテキスト ファイルを作成します:

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

ファイルを hello.js として保存し、実行します。

phantomjs hello.js

出力結果は次のとおりです: Hello, world!

最初の行は端末に文字列を出力し、2 行目の phantom.exit は操作を終了します。
このスクリプトで phantom.exit を呼び出すことが非常に重要です。そうしないと、PhantomJS がまったく停止しません。

スクリプト引数 – スクリプト引数

Phantomjs でパラメータを渡すにはどうすればよいですか?以下に示すように:

コードをコピーします コードは次のとおりです:

phantomjs 例/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: フー
1: バー
2: バズ

ページの読み込み – ページの読み込み

Web ページ オブジェクトを作成すると、Web ページをロード、分析、レンダリングできます。

次のスクリプトは、サンプル ページ オブジェクトを最も単純な形式で使用し、example.com を読み込み、画像 example.png として保存します。

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

この機能により、PhantomJS を使用して、Web ページのスクリーンショットを撮ったり、Web ページや SVG を画像や PDF などとして保存したりするなど、一部のコンテンツのスナップショットを撮ることができます。この機能は素晴らしいです。

次の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();
});

コマンドラインから次のスクリプトを実行します:

phantomjsloadspeed.js http://www.google.com
次のようなものが出力されます:

http://www.google.com の読み込み中 読み込み時間 719 ミリ秒

コード評価 – コード評価

Web ページのコンテキストで 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);
});

Web ページからのコンソール情報や、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 操作

スクリプトは Web ブラウザであるかのように実行されるため、標準の 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();
});
上記の例では、ユーザー エージェントをカスタマイズする方法も提供しています。

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()
 });
});
ネットワークのリクエストと応答 – ネットワークのリクエストと応答

ページがリモート サーバーからリソースをリクエストすると、リクエストとレスポンスの両方が 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语言常用框架,让您快速入门Feb 24, 2024 pm 05:09 PM

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

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

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

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

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

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

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

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

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

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター