如何从网页检索 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中文网其他相关文章!