我正在尝试抓一个网站并获取一个iTunes促销代码。经过一些实验,我发现我可以使用JavaScript控制台轻松获取代码:http://cl.ly/image/3U1K2a2b1f36/console.png
此后不久,我尝试了以下PhantomJS:
var page = require('webpage').create();
page.open('http://www.air1.com/music/free-songs.aspx', function () {
code = page.evaluate(function() {
__doPostBack('ctl00$cphRight1$itunesPromo$lbGetDownloadCode','');
return document.getElementById('ctl00_cphRight1_itunesPromo_lblItunesCodes').innerText;
});
console.log('Code: ' + code);
phantom.exit();
});
它没有像我想象的那样工作 - code
被空了。
答案 0 :(得分:2)
弹出窗口可能不是在加载它的调用和获取innerText的调用之间的DOM中。尝试暂停。
var page = require('webpage').create();
page.open('http://www.air1.com/music/free-songs.aspx', function (status) {
if (status !== 'success') {
console.log('error');
phantom.exit();
return;
}
page.evaluate(function() {
__doPostBack('ctl00$cphRight1$itunesPromo$lbGetDownloadCode','');
});
setTimeout(function() {
var code = page.evaluate(function() {
return document.getElementById('ctl00_cphRight1_itunesPromo_lblItunesCodes').innerText;
});
console.log('code = ' + code);
phantom.exit();
}, 1000);
});