Aujourd’hui, avec le développement rapide de l’information sur Internet, les captures d’écran de pages Web s’avèrent très pratiques dans de nombreux scénarios. Par exemple, pendant le processus d'exploration et d'analyse des données, nous pouvons avoir besoin d'obtenir des captures d'écran de pages Web ; lors des tests de pages Web, nous devons vérifier l'effet d'affichage de la page Web. Cet article montrera comment utiliser PHP pour analyser HTML/XML et le combiner avec PhantomJS pour prendre des captures d'écran de pages Web.
Avant de démarrer l'opération, vous devez préparer l'environnement suivant :
Les extensions et outils PHP nécessaires incluent :
En PHP, la bibliothèque la plus couramment utilisée pour analyser HTML/XML est DOMDocument, qui est une bibliothèque de classes intégrée à PHP qui peut être utilisée pour analyser des documents XML et HTML.
L'exemple suivant montre comment utiliser DOMDocument pour analyser le HTML et obtenir les éléments de page Web qui nécessitent des captures d'écran :
<?php
// Créer unDOMDocumentobjet
$dom = new DOMDocument();
// chargerHTMLcontenu
$html = file_get_contents('http://example.com');
$dom-> chargerHTML($html);
// Utilisez XPath pour interroger les éléments qui doivent être capturés $xpath = new DOMXpath($dom);
$elements = $xpath->query("//div[@class='screenshot']");
// Parcourez les résultats de la requête et obtenez la position et la taille de l'élément pour chaque ($elements as $element) {
$x = $element->offsetLeft ;
$y = $element->offsetTop ;
$width = $element->offsetWidth ;
$hauteur = $element->offsetHeight ;
// Prendre des captures d'écran de pages Web // ...
}
?>La mise en œuvre de captures d'écran de pages Web en PHP nécessite généralement l'utilisation d'outils tiers, tels que PhantomJS. PhantomJS est un navigateur WebKit sans interface qui peut être utilisé via une interface de ligne de commande.
L'exemple de code est le suivant :
<?php // Exécution de la ligne de commande du système d'appelPhantomJSet fais une capture d'écran $command = "phantomjs rasterize.js http://example.com screenshot.png"; exec($command); ?>
Dans l'exemple ci-dessus, nous avons utilisé le script rasterize.js fourni avec PhantomJS pour restituer la page Web sous forme d'image.
Combinez désormais l'analyse HTML/XML avec des captures d'écran de pages Web pour obtenir des captures d'écran précises :
<?php
// créerDOMDocumentobjet
$dom = new DOMDocument();
// chargerHTMLcontenu
$html = file_get_contents('http://example.com');
$dom-> chargerHTML($html);
// Utilisez XPath pour interroger les éléments qui doivent être capturés $xpath = new DOMXpath($dom);
$elements = $xpath->query("//div[@class='screenshot']");
// Parcourez les éléments et appelez la capture d'écran PhantomJS foreach ($elements as $element) {
$x = $element->offsetLeft ;
$y = $element->offsetTop ;
$width = $element->offsetWidth ;
$hauteur = $element->offsetHeight ;
$command = "phantomjs rasterize.js http://example.com capture d'écran.png $x $y $width $height";
exec($commande);
}
?>Dans cet exemple, nous utilisons d'abord DOMDocument pour analyser le HTML, puis XPath pour interroger l'emplacement et la taille de l'élément qui doit être capturé. Ensuite, nous appelons PhantomJS via la ligne de commande système pour prendre une capture d'écran de la page Web et générer une image de la zone spécifiée.
En analysant HTML/XML avec PHP et en le combinant avec PhantomJS pour prendre des captures d'écran de pages Web, vous pouvez facilement réaliser la fonction de capture d'écran du contenu d'une page Web. Ceci est très utile dans des scénarios tels que l'exploration Web et les tests Web. Dans les applications réelles, vous devez également prêter attention à des détails tels que la gestion des exceptions et les chemins de sauvegarde des images, qui peuvent être étendus et optimisés en fonction des besoins réels.