PHP Manual

Téléchargement de l'ensemble du site par liens en PHP

06. 11. 2019

Obsah článku

Il m'arrive assez souvent de télécharger toutes les pages d'un site ou d'un domaine, car j'effectue ensuite diverses mesures avec les résultats, ou j'utilise les pages pour une recherche en texte intégral.

Une solution possible est d'utiliser l'outil prêt à l'emploi Xenu, qui est très difficile à installer sur un serveur web (c'est un programme Windows), ou Wget, qui n'est pas supporté partout et crée une autre dépendance inutile.

Si la tâche consiste simplement à faire une copie de la page pour la consulter ultérieurement, le programme [HTTrack] (https://www.httrack.com/) est très utile, et c'est celui que j'apprécie le plus. Seulement, lorsque l'on recherche des URL paramétrées, on peut perdre en précision dans certains cas.

J'ai donc commencé à chercher un outil qui puisse indexer automatiquement toutes les pages directement en PHP avec une configuration avancée. Finalement, cela est devenu un projet opensource.

WebCrawler de Baraja

C'est précisément pour répondre à ces besoins que j'ai mis en place mon propre paquet Composer [WebCrawler] (https://github.com/baraja-core/webcrawler), qui peut gérer le processus d'indexation des pages de manière élégante et autonome, et si je rencontre un nouveau cas, je l'améliore.

Il est installé avec la commande Composer :

composer require baraja-core/webcrawler

Et il est facile à utiliser. Il suffit de créer une instance et d'appeler la méthode crawl() :

$crawler = new \Baraja\WebCrawler\Crawler;
$result = $crawler->crawl('https://example.com');

Dans la variable $result, le résultat complet sera disponible comme une instance de l'entité CrawledResult, que je recommande d'étudier car elle contient beaucoup d'informations intéressantes sur l'ensemble du site.

Paramètres des chenilles

Souvent, nous devons limiter le téléchargement des pages d'une manière ou d'une autre, car sinon nous téléchargerions probablement tout l'internet.

Pour ce faire, on utilise l'entité Config, à laquelle on transmet la configuration sous forme de tableau (clé-valeur) et qui est ensuite transmise au Crawler par le constructeur.

Par exemple :

$crawler = new \Baraja\WebCrawler\Crawler(
new \Baraja\WebCrawler\Config([
// clé => valeur
])
);

Options de réglage :

Touche Valeur par défaut Valeurs possibles
followExternalLinks false Bool : Rester seulement dans le même domaine ? Peut-il également indexer les liens externes ?
sleepBetweenRequests 1000 Int : Temps d'attente entre le téléchargement de chaque page en millisecondes.
maxHttpRequests 1000000 Int : Combien d'URLs maximums téléchargées ?
maxCrawlTimeInSeconds 30 Int : Durée maximale du téléchargement en secondes ?
allowedUrls ['.+'] String[] : Tableau des formats d'URL autorisés sous forme d'expressions régulières.
forbiddenUrls [''] String[] : Tableau de formats d'URL interdits sous forme d'expressions régulières.

L'expression régulière doit correspondre à l'intégralité de l'URL exactement sous forme de chaîne.

Jan Barášek   Více o autorovi

Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.

Rád vám pomůžu:

Související články

1.
Status:
All systems normal.
2024