2013-02-26 137 views
0

我想刮一個網站,並抓住iTunes促銷代碼。有點實驗後,我發現我可以用JavaScript控制檯獲取代碼很容易:http://cl.ly/image/3U1K2a2b1f36/console.png我如何用phantomjs刮擦網站?

此後不久,我試圖用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返回空。

回答

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); 
});