Maison >interface Web >js tutoriel >Comment puis-je récupérer le contenu dynamique d'une page Web à l'aide de Node.js ?

Comment puis-je récupérer le contenu dynamique d'une page Web à l'aide de Node.js ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-18 05:04:14520parcourir

How Can I Scrape Dynamic Web Page Content Using Node.js?

Scraping de pages avec du contenu dynamique à l'aide de Node.js

Pour les scrapers Web, le contenu dynamique peut poser des défis. Un tel exemple est lorsque les éléments d'une page sont créés après le chargement initial de la page. Dans de tels scénarios, une méthode de scraping standard peut ne pas suffire.

Considérez ce problème lorsque vous utilisez cheerio dans Node.js. Le code suivant tente de récupérer des éléments d'une page, mais les éléments dynamiques ne sont pas présents lorsque le chargement cheerio se produit :

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 renvoie souvent une réponse vide car les éléments ne sont pas encore présents dans le fichier de la page. HTML lors du chargement de Cheerio. Alors, comment pouvons-nous récupérer ces éléments à l'aide de Node.js ?

Solution : utiliser PhantomJS

Pour gérer le contenu dynamique, nous pouvons utiliser PhantomJS, un navigateur Web sans tête qui peut exécuter JavaScript. PhantomJS nous permet de simuler un navigateur interagissant avec la page et de récupérer les éléments dès qu'ils deviennent disponibles. Voici un exemple utilisant 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()
        });
      });
    });
  });
});

Dans ce code, nous incluons d'abord jQuery dans la page à l'aide de PhantomJS, nous permettant d'interagir dynamiquement avec les éléments. Nous évaluons ensuite le code JavaScript qui enregistre les attributs href des éléments dans la console.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn