Heim > Web-Frontend > js-Tutorial > Wie kann ich dynamische Webseiteninhalte mit Node.js scrapen?

Wie kann ich dynamische Webseiteninhalte mit Node.js scrapen?

Mary-Kate Olsen
Freigeben: 2024-12-18 05:04:14
Original
519 Leute haben es durchsucht

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

Scraping von Seiten mit dynamischen Inhalten mit Node.js

Für Web-Scraper können dynamische Inhalte eine Herausforderung darstellen. Ein solches Beispiel ist, wenn die Elemente einer Seite nach dem ersten Laden der Seite erstellt werden. In solchen Szenarien reicht eine Standard-Scraping-Methode möglicherweise nicht aus.

Berücksichtigen Sie dieses Problem, wenn Sie Cheerio in Node.js verwenden. Der folgende Code versucht, Elemente von einer Seite zu entfernen, aber die dynamischen Elemente sind nicht vorhanden, wenn die Cheerio-Last auftritt:

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'));
    });
});
Nach dem Login kopieren

Dieser Code gibt häufig eine leere Antwort zurück, da die Elemente auf der Seite noch nicht vorhanden sind HTML, wenn Cheerio geladen wird. Wie können wir diese Elemente also mit Node.js abrufen?

Lösung: Verwendung von PhantomJS

Um dynamische Inhalte zu verarbeiten, können wir PhantomJS verwenden, einen Headless-Webbrowser, der kann JavaScript ausführen. Mit PhantomJS können wir die Interaktion eines Browsers mit der Seite simulieren und Elemente abrufen, sobald sie verfügbar sind. Hier ist ein Beispiel mit 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()
        });
      });
    });
  });
});
Nach dem Login kopieren

In diesem Code fügen wir zunächst jQuery mithilfe von PhantomJS in die Seite ein, sodass wir dynamisch mit den Elementen interagieren können. Anschließend werten wir den JavaScript-Code aus, der die href-Attribute der Elemente in der Konsole protokolliert.

Das obige ist der detaillierte Inhalt vonWie kann ich dynamische Webseiteninhalte mit Node.js scrapen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage