Dans le développement Web moderne, le contenu dynamique de nombreux sites Web est généré et rendu sur des pages HTML via JavaScript. Pour les robots de web, ce type de contenu dynamique apportera certains défis rampants, car les robots traditionnels ne peuvent ramper que des pages HTML statiques et ne peuvent pas exécuter le code JavaScript. Pour traiter ce problème, cet article présentera comment utiliser PHPSPider pour gérer le contenu dynamique rendu par JavaScript et présentera plusieurs solutions courantes.
Le contenu dynamique est généralement rendu sur une page Web par un script JavaScript après avoir été exécuté par un client. Contrairement à rendre directement le HTML du côté serveur, le contenu de rendu JavaScript est plus flexible et peut offrir une expérience interactive plus riche. Cependant, lorsque les Crawlers rampent ce type de contenu, les méthodes traditionnelles ne peuvent obtenir que le code source HTML d'origine et ne peuvent pas voir le contenu réel généré après le rendu JavaScript.
Afin de surmonter les limites des robots traditionnels qui ne peuvent pas gérer le rendu JavaScript, nous pouvons utiliser un navigateur sans tête pour le rendu Web. Les navigateurs sans tête tels que Chrome sans tête ou Phantomjs peuvent charger et exécuter JavaScript, renvoyant ainsi la page HTML complète rendue. Voici un exemple de code pour utiliser le chrome sans tête pour rendre le contenu dynamique:
<?php use JonnyWPhantomJsClient; $client = Client::getInstance(); $request = $client->getMessageFactory () -> CreateRequest ('http://example.com', 'get'); $ réponse = $ client-> getMessageFactory () -> CreateResponse (); $ client-> Send ($ request, $ réponse); // obtient le résultat de rendu $ renderedhtml = $ réponse-> getContent (); // traite le résultat de rendu // ... ?>
Dans le code ci-dessus, nous obtenons le contenu HTML rendu en créant une instance Chrome sans tête et en envoyant une demande GET. Vous pouvez utiliser cette méthode pour saisir du contenu de page rendu dynamiquement.
En plus des navigateurs sans tête, une autre façon de gérer le contenu de rendu JavaScript est d'utiliser des services tiers qui fournissent des API de rendu client. Par exemple, Prerender.io, qui nous permet d'envoyer des demandes d'URL et d'obtenir du contenu de page de rendu. Voici un exemple de code pour obtenir une page rendu via l'API Prerender.io:
<?php $url = 'http://api.prerender.io/https://example.com'; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false); // Facultatif:Ajouter àPrerender.iodeTokenEffectuer l'authentification de l'identité // curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-Prerender-Token: YOUR_PRERENDER_TOKEN']); $renderedHtml = curl_exec($ch); // Résultats de rendu de processus // ... curl_close($ch); ?>
Dans cet exemple, nous utilisons la bibliothèque Curl de PHP pour envoyer une demande GET à l'API Prerender.io pour obtenir le contenu de la page Web rendu. Vous pouvez personnaliser davantage les paramètres de demande et traiter les résultats de rendu en fonction des besoins réels.
En utilisant des navigateurs sans tête (tels que Chrome sans tête) ou des API de rendu de clientèle tiers (tels que Prerender.io), nous pouvons traiter efficacement le contenu Web dynamique rendu par JavaScript, permettant à PHPSPider de ramper des données Web plus complètes. Le choix des bons outils et méthodes peut considérablement améliorer l'efficacité et la précision de la dynamique dynamique du Web.