Maison >développement back-end >tutoriel php >Comment puis-je récupérer les données dynamiques générées par JavaScript à partir d'un site Web ?

Comment puis-je récupérer les données dynamiques générées par JavaScript à partir d'un site Web ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-03 17:33:11182parcourir

How Can I Scrape Dynamic JavaScript-Generated Data from a Website?

Comment récupérer des données générées par JavaScript à partir d'une page Web

Le Web scraping peut être difficile lorsque le contenu d'une page est généré dynamiquement par JavaScript. Un tel scénario est rencontré sur http://vtis.vn/index.aspx, où les données souhaitées ("Danh sách chậm") ne sont pas disponibles tant qu'un bouton n'est pas cliqué.

Solution utilisant PhantomJS

Pour récupérer ces données par programme, envisagez d'utiliser PhantomJS, un navigateur WebKit sans tête doté de fonctionnalités JavaScript. PhantomJS permet la création de scripts pour les interactions du navigateur, vous permettant de simuler un clic sur le bouton et d'accéder ensuite aux données rendues.

Exemple de script :

var page = require('webpage').create();

page.open('http://vtis.vn/index.aspx', function() {
  page.evaluate(function() {
    // Click the "Danh sách chậm" button
    document.querySelector('button[onclick="DanhSachCham();"]').click();
  });

  // Wait for the data to load
  setTimeout(function() {
    var data = page.evaluate(function() {
      // Extract the data from the page
      return document.querySelector('div[id="DivDanhSachTTHT"] tbody').innerHTML;
    });
    console.log(data);
  }, 1000);
});

Approche alternative : Utilisation d'une API

Si possible, il est recommandé de rechercher si la page effectue des appels Ajax pour récupérer les données. Si tel est le cas, il peut être possible d’éviter le scraping et d’interagir avec une API pour obtenir directement les données. Cette approche est généralement plus stable et maintenable que le scraping.

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