Maison  >  Article  >  interface Web  >  Tutoriel de démarrage rapide PhantomJS (API WebKit JavaScript côté serveur)_compétences javascript

Tutoriel de démarrage rapide PhantomJS (API WebKit JavaScript côté serveur)_compétences javascript

WBOY
WBOYoriginal
2016-05-16 15:46:441286parcourir

PhantomJS est une API JavaScript côté serveur basée sur WebKit. Il prend entièrement en charge le Web sans nécessiter la prise en charge du navigateur, et il est rapide et prend en charge nativement diverses normes Web : traitement DOM, sélecteurs CSS, JSON, Canvas et SVG. PhantomJS peut être utilisé pour l'automatisation des pages, la surveillance du réseau, les captures d'écran de pages Web et les tests sans interface, etc.

Site officiel de PhantomJs : http://phantomjs.org/
GitHub :https://github.com/ariya/phantomjs/wiki/Quick-Start

1.Installation

Adresse de téléchargement du package d'installation : http://phantomjs.org/download.html, y compris les versions Windows, Mac OS et Linux. Vous pouvez choisir la version correspondante à télécharger et décompresser (pour plus de commodité, vous pouvez définir des variables d'environnement pour phantomjs), qui contient un dossier d'exemple avec beaucoup de code déjà écrit à utiliser. Cet article suppose que phantomjs a été installé et que les variables d'environnement ont été définies.

2. Utiliser

Bonjour le monde !

Créez un nouveau fichier texte contenant les deux lignes de script suivantes :

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

Enregistrez le fichier sous hello.js et exécutez-le :

phantomjs bonjour.js

Le résultat de sortie est : Bonjour tout le monde !

La première ligne imprimera la chaîne dans le terminal et la deuxième ligne phantom.exit quittera l'opération.
Il est très important d'appeler phantom.exit dans ce script, sinon PhantomJS ne s'arrêtera pas du tout.

Arguments de script – Arguments de script

Comment passer des paramètres dans Phantomjs ? Comme indiqué ci-dessous :

Copier le code Le code est le suivant :

phantomjs exemples/arguments.js foo bar baz

Foo, bar, baz sont les paramètres à passer. Comment les obtenir :

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

Il affichera :

0 : foo
1 : barre
2 : baz

Chargement de la page – Chargement de la page

En créant un objet de page Web, une page Web peut être chargée, analysée et rendue.

Le script suivant utilise l'exemple d'objet page dans sa forme la plus simple. Il charge example.com et l'enregistre sous forme d'image, example.png .

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

Grâce à cette fonctionnalité, PhantomJS peut être utilisé pour prendre des captures d'écran de pages Web et prendre des instantanés de certains contenus, comme l'enregistrement de pages Web et de SVG sous forme d'images, de PDF, etc. Cette fonction est géniale.

Le prochain script loadspeed.js charge une URL spéciale (n'oubliez pas le protocole http) et mesure le temps nécessaire pour charger la page.

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

Exécutez ce script depuis la ligne de commande :

phantomjs loadspeed.js http://www.google.com
Cela donne quelque chose comme :

Chargement http://www.google.com Temps de chargement 719 ms

Évaluation du code – Évaluation du code

Pour évaluer JavaScript ou CoffeeScript dans le contexte d'une page Web, utilisez la méthode évaluer(). Le code s'exécute dans un "bac à sable" et n'a aucun moyen de lire des objets et variables JavaScript en dehors du contexte de la page à laquelle il appartient. évalue() renvoie un objet, mais il est limité aux objets simples et ne peut pas contenir de méthodes ou de fermetures.

Voici un exemple pour afficher le titre de la page :

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

Toutes les informations de console de la page Web et y compris le code d'evaluate() ne seront pas affichées par défaut. Pour remplacer ce comportement, utilisez la fonction de rappel onConsoleMessage. L'exemple précédent peut être réécrit comme suit :

.
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);
 });
});

Manipulation DOM – Manipulation DOM

Étant donné que le script s'exécute comme s'il s'agissait d'un navigateur Web, les scripts DOM standard et les sélecteurs CSS fonctionnent correctement. Cela rend PhantomJS adapté à la prise en charge d'une variété de tâches d'automatisation de pages.

Le useragent.js suivant lira l'attribut textContent de l'élément avec l'identifiant myagent :

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

L'exemple ci-dessus fournit également un moyen de personnaliser l'agent utilisateur.

Utilisez JQuery et d'autres bibliothèques :

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

Demandes et réponses réseau – Demandes et réponses réseau

Lorsqu'une page demande une ressource à un serveur distant, la demande et la réponse peuvent être suivies via les méthodes de rappel onResourceRequested et onResourceReceived. Exemple 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);

Pour plus d'informations sur l'utilisation de cette fonctionnalité pour la sortie HAR et l'analyse des performances basée sur YSlow, veuillez vous référer à la Page de surveillance du réseau.

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn