如何從網頁擷取 JavaScript 產生的資料
當頁面內容由 JavaScript 動態產生時,網頁抓取可能會很困難。 http://vtis.vn/index.aspx 遇到了這樣的場景,其中所需的資料(“Danh sách chậm”)只有在單擊按鈕後才可用。
使用 PhantomJS 的解決方案
要以程式設計方式檢索此數據,請考慮使用 PhantomJS,這是一個帶有 JavaScript 的無頭 WebKit 瀏覽器能力。 PhantomJS 支援瀏覽器互動腳本,可讓您模擬點擊按鈕並隨後存取渲染的資料。
範例腳本:
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); });
替代方法:使用API
如果可能,探索頁面是否做
如果可能,探索頁面是否做了任何建議使用Ajax 呼叫來檢索資料。如果是這樣,就有可能避免抓取,而是與 API 互動以直接取得資料。這種方法通常比抓取更穩定且可維護。以上是如何從網站抓取動態 JavaScript 產生的資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!