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')); }); });
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() }); }); }); }); });
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!