Scraping de contenu dynamique avec Node.js et PhantomJS
Lorsque vous tentez de gratter des pages Web avec du contenu généré dynamiquement à l'aide de Node.js, méthodes conventionnelles comme Cheerio peut ne pas réussir à capturer les éléments souhaités. En effet, le contenu est chargé de manière asynchrone après le chargement initial de la page.
Utilisation de PhantomJS pour le scraping de contenu dynamique
Pour scraper efficacement le contenu dynamique, nous pouvons utiliser PhantomJS, un moteur de navigateur Web sans tête contrôlable via JavaScript. PhantomJS nous permet de simuler un vrai navigateur et d'exécuter du JavaScript, nous permettant ainsi d'interagir avec du contenu dynamique comme dans un navigateur classique.
Résoudre le problème de contenu dynamique de l'exemple
Dans l'exemple fourni, nous rencontrons un problème où la liste des éléments souhaités est initialement vide et remplie ultérieurement via JavaScript. Pour résoudre ce problème, nous pouvons utiliser PhantomJS pour :
Code modifié Extrait :
var phantom = require('phantom'); phantom.create(function (ph) { ph.createPage(function (page) { var url = "http://www.bdtong.co.kr/index.php?c_category=C02"; page.open(url, function() { page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() { page.evaluate(function() { $('.listMain > li').each(function () { console.log($(this).find('a').attr('href')); }); }, function(){ ph.exit() }); }); }); }); });
En tirant parti de PhantomJS, nous pouvons contourner le chargement asynchrone du contenu et récupérer efficacement les éléments souhaités. Cette approche est plus fiable pour récupérer du contenu dynamique que de s'appuyer uniquement sur une analyse HTML statique.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!