0

サイトをスクレイピングして 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>code が空で返されます。

4

1 に答える 1

3

ポップアップは、それをロードする呼び出しと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);
});
于 2013-02-26T23:06:19.577 に答える