A également besoin de Chromium PHP sans tête et de chrome, si vous souhaitez utiliser cette bibliothèque avec une prise en charge de navigation sans tête (inclut par Standart dans la version Packagist).
$ composer require shamanhead/phpporser
Cela pourrait fonctionner sur Windows, MacOS et Linux.
Alors, allez sur la page de téléchargement officielle du navigateur Chromium et téléchargez-le.
Après avoir fait cette étape, déballer les archives et passer à l'endroit nécessaire.
Ensuite, spécifiez le chemin dans votre script:
require_once " vendor/autoload.php " ;
use HeadlessChromium Page ;
use ShamanHead PhpPorser App Dom as Dom ;
$ dom = new Dom ();
$ dom -> setHref ( ' file:///home/shamanhead/dev/porser/phpporser-master/test.html ' );
$ dom -> setBrowserPath ( ' PATH_TO_CHROME ' );Si vous avez bien fait, l'analyseur fonctionnerait. Si vous avez des erreurs au cours de cette étape, vous pouvez aller voir ici, y a-t-il une solution pour résoudre votre problème. Dans un autre cas, s'il vous plaît, ouvrez un nouveau problème ici ou sur la page PHP Chromium sans tête.
Tout d'abord, essayons d'obtenir une chaîne «Science informatique» en haut de la page:
<?php
require_once " vendor/autoload.php " ;
use ShamanHead PhpPorser App Dom as Dom ;
$ dom = new Dom ();
$ dom -> setHref ( ' https://en.wikipedia.org/wiki/Computer_science ' );
print_r ( $ dom -> tag ( ' h1 ' )-> class ( ' firstHeading ' )-> text ()-> merge ());
?>Ça fonctionne! Mais comment? Laissez-moi expliquer:
<?php
require_once " vendor/autoload.php " ;
use ShamanHead PhpPorser App Dom as Dom ;
$ dom = new Dom ();
$ dom -> setHref ( ' href to file ' );
print_r ( $ dom -> tag ( ' h1 ' )-> array ()); //finds by tag name 'h1'
print_r ( $ dom -> id ( ' firstHeading ' )-> array ()); //finds by id name 'firstHeading'
print_r ( $ dom -> class ( ' wrapper__main ' )-> array ()); //finds by class name 'wrapper_main'
print_r ( $ dom -> custom ([ ' name ' , ' button ' ])-> array ()); //finds by 'name' attribute value 'button'
?>Vous pouvez combiner des méthodes de recherche entre elles, pour trouver des éléments de manière spéciale:
<?php
require_once " vendor/autoload.php " ;
use ShamanHead PhpPorser App Dom as Dom ;
$ dom = new Dom ();
$ dom -> setHref ( ' href to file ' );
print_r ( $ dom -> class ( ' main ' )-> id ( ' firstHeading ' )-> tag ( ' h1 ' )-> array ());
?> <?php
require_once " vendor/autoload.php " ;
use ShamanHead PhpPorser App Dom as Dom ;
$ dom = new Dom ();
$ dom -> setHref ( ' href to file ' );
$ divText = $ dom -> tag ( ' div ' )-> id ( ' someDiv ' )-> text ();
$ divText -> contents (); //Returns all text in array form.
$ divText -> merge ( ' symbol ' ); //Returns all text in string form with 'symbol' separator
//'n' by default.
$ divText -> first (); //Returns first founded text.
$ divText -> last (); //Returns last founded text.
?>