Javascript 如何使用phantomjs刮取站点?
我正试图抓取一个网站和一个iTunes促销代码。经过一段时间的实验,我发现使用JavaScript控制台可以很容易地获得代码: 不久之后,我用PhantomJS尝试了以下方法:Javascript 如何使用phantomjs刮取站点?,javascript,phantomjs,Javascript,Phantomjs,我正试图抓取一个网站和一个iTunes促销代码。经过一段时间的实验,我发现使用JavaScript控制台可以很容易地获得代码: 不久之后,我用PhantomJS尝试了以下方法: var page = require('webpage').create(); page.open('http://www.air1.com/music/free-songs.aspx', function () { code = page.evaluate(function() { __
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
返回为空。在调用加载它和调用获取内部文本之间,弹出窗口可能不在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);
});
在调用加载和调用获取内部文本之间,弹出窗口可能不在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);
});