Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich dynamische, mit JavaScript generierte Daten von einer Website extrahieren?
So rufen Sie von JavaScript generierte Daten von einer Webseite ab
Web Scraping kann eine Herausforderung sein, wenn Seiteninhalte dynamisch von JavaScript generiert werden. Ein solches Szenario tritt unter http://vtis.vn/index.aspx auf, wo die gewünschten Daten („Danh sách chậm“) erst verfügbar sind, wenn auf eine Schaltfläche geklickt wird.
Lösung mit PhantomJS
Um diese Daten programmgesteuert abzurufen, sollten Sie PhantomJS verwenden, einen Headless-WebKit-Browser mit JavaScript-Funktionen. PhantomJS ermöglicht die Skripterstellung von Browserinteraktionen, sodass Sie das Klicken auf die Schaltfläche und den anschließenden Zugriff auf die gerenderten Daten simulieren können.
Beispielskript:
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); });
Alternativer Ansatz : Verwenden einer API
Wenn möglich, prüfen Sie, ob die Seite Ajax-Aufrufe zum Abrufen der Daten durchführt empfohlen. In diesem Fall ist es möglicherweise möglich, Scraping zu vermeiden und stattdessen mit einer API zu interagieren, um die Daten direkt abzurufen. Dieser Ansatz ist in der Regel stabiler und wartbarer als das Schaben.
Das obige ist der detaillierte Inhalt vonWie kann ich dynamische, mit JavaScript generierte Daten von einer Website extrahieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!