PhantomJS는 WebKit 기반의 서버측 JavaScript API입니다. 브라우저 지원 없이 웹을 완벽하게 지원하며, 빠르고 기본적으로 DOM 처리, CSS 선택기, JSON, Canvas, SVG 등 다양한 웹 표준을 지원합니다. PhantomJS는 페이지 자동화, 네트워크 모니터링, 웹 페이지 스크린샷, 인터페이스 없는 테스트 등에 사용할 수 있습니다.
PhantomJs 공식 홈페이지: http://phantomjs.org/
GitHub:https://github.com/ariya/phantomjs/wiki/빠른 시작
1. 설치
설치 패키지 다운로드 주소: http://phantomjs.org/download.html, Windows, Mac OS, Linux 버전을 포함하여 다운로드하고 압축을 풀 수 있습니다(편의상). 이미 작성된 코드가 많이 포함된 예제 폴더가 있는 phantomjs에 대한 환경 변수를 설정할 수 있습니다. 이 글에서는 phantomjs가 설치되어 있고 환경 변수가 설정되어 있다고 가정합니다.
2. 사용
안녕하세요, 월드!
다음 두 줄의 스크립트가 포함된 새 텍스트 파일을 만듭니다.
console.log('Hello, world!'); phantom.exit();
hello.js로 파일을 저장하고 실행하세요.
phantomjs hello.js
출력 결과는 다음과 같습니다: Hello, world!
첫 번째 줄은 터미널의 문자열을 인쇄하고 두 번째 줄은 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: foo
1: 바
2: 바즈
페이지 로딩 – 페이지 로딩
웹페이지 개체를 생성하면 웹페이지를 로드, 분석 및 렌더링할 수 있습니다.
다음 스크립트는 가장 간단한 형식의 예제 페이지 개체를 사용하여 example.com을 로드하고 example.png라는 이미지로 저장합니다.
var page = require('webpage').create(); page.open('http://example.com', function () { page.render('example.png'); phantom.exit(); });
이 기능으로 인해 PhantomJS를 사용하여 웹 페이지의 스크린샷을 찍고 웹 페이지 및 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(); });
명령줄에서 다음 스크립트를 실행하세요.
phantomjs loadspeed.js http://www.google.com
다음과 같이 출력됩니다.
http://www.google.com 로딩 로딩 시간 719밀리초
코드 평가 - 코드 평가
웹페이지의 맥락에서 JavaScript 또는 CoffeeScript를 평가하려면 평가() 메서드를 사용하세요. 코드는 "샌드박스"에서 실행되며 해당 코드가 속한 페이지 컨텍스트 외부의 JavaScript 개체 및 변수를 읽을 수 있는 방법이 없습니다. 평가()는 객체를 반환하지만 단순한 객체로 제한되며 메서드나 클로저를 포함할 수 없습니다.
페이지 제목을 표시하는 예는 다음과 같습니다.
var page = require('webpage').create(); page.open(url, function (status) { var title = page.evaluate(function () { return document.title; }); console.log('Page title is ' + title); });
웹 페이지의 콘솔 정보와 평가()의 코드를 포함하는 모든 콘솔 정보는 기본적으로 표시되지 않습니다. 이 동작을 재정의하려면 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 조작
스크립트가 웹 브라우저처럼 실행되므로 표준 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);
네트워크 모니터링 페이지를 참조하세요.

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

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

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

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

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

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

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

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


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

뜨거운 주제



