Scraping de contenu dynamique avec Node.js
Lors du scraping de sites Web, il n'est pas rare de rencontrer du contenu dynamique qui peut ne pas être immédiatement visible lorsque le chargements de pages. Pour extraire efficacement les données de ces pages, vous devez comprendre comment ce contenu est créé.
Exemple avec Cheerio
Considérez l'extrait de code suivant :
var request = require('request'); var cheerio = require('cheerio'); var url = "http://www.bdtong.co.kr/index.php?c_category=C02"; request(url, function (err, res, html) { var $ = cheerio.load(html); $('.listMain > li').each(function () { console.log($(this).find('a').attr('href')); }); });
Ce code tente de récupérer un site Web à l'aide de Cheerio, mais il renvoie des résultats vides car les éléments que vous souhaitez extraire (
Solution : Utilisation de PhantomJS
Pour récupérer du contenu dynamique, vous avez besoin d'une solution capable d'exécuter JavaScript et de simuler un navigateur. C'est là qu'intervient PhantomJS. PhantomJS est un moteur de navigateur sans tête qui vous permet d'exécuter des commandes JavaScript et de restituer des pages Web.
Voici comment modifier votre code avec PhantomJS :
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 incluant PhantomJS, vous pouvez désormais exécuter du JavaScript sur la page et manipuler le DOM pour extraire le contenu dynamique dont vous avez besoin.
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!