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

Comment puis-je récupérer le contenu dynamique d'un site Web à l'aide de Node.js et PhantomJS ?

Mary-Kate Olsen
Libérer: 2024-12-13 07:50:10
original
595 Les gens l'ont consulté

How Can I Scrape Dynamic Website Content Using Node.js and PhantomJS?

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'));
    });
});
Copier après la connexion

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 (

    ) sont créé dynamiquement après le chargement de la page.

    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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal