2012-01-01 16 views
6

Digikey kendi web sitesini değiştirdi ve şimdi posta yoluyla yük olarak adlandırılan bir javascript var. Bu eski basit java HTML kod geri alıcımı öldürdü. HTML/metni kaydetmeden önce javascript'in çalıştırılmasına izin vermek için PhantomJS'yi kullanmaya çalışıyorum.PhantomJS sayfa dökümü komut dosyası hatası

var page = new WebPage(), 
t, address; 


var fs = require('fs'); 

if (phantom.args.length === 0) { 

console.log('Usage: save.js <some URL>'); 
phantom.exit(); 
} else { 

address = encodeURI(phantom.args[0]); 
page.open(address, function (status) { 
    if (status !== 'success') { 
     console.log('FAIL to load the address'); 
    } else { 
     f = null; 
     var markup = page.content; 
     console.log(markup); 
     try { 
     f = fs.open('htmlcode.txt', "w"); 
     f.write(markup); 
     f.close();   
     } catch (e) { 
      console.log(e); 
     } 
    } 
    phantom.exit(); 

}); 

} 

Bu kod çoğu web sayfalarında ile çalışır ancak başarısız: benim test durumdur

http://search.digikey.com/scripts/dksearch/dksus.dll?keywords=S7072-ND

. URL'yi açamaz ve daha sonra PhantomJS çöküyor. Win32 statik yapısını kullanma 1.3.

Herhangi bir ipucu?

Temelde neyim dosya kaydetmeden önce belgeyi değiştiren sayfa oluşturma ve komut dosyaları ile rekabet eden bir wget.

cevap

1

Hızlı bir kirli çözüm ... ve henüz phantomjs sitesinde yayınlanmıştır ... bir zaman aşımı kullanmaktır. Kodunuzu 2 saniyelik bir bekleme süresini değiştirmek için değiştirdim. Bu, içeriğin bir dosyaya dökülmesinden önce sayfanın 2 saniye boyunca yüklenmesini sağlar. Eğer tam saniyeye ihtiyacınız varsa veya zaman miktarı büyük ölçüde değişeceğinden, bu çözüm muhtemelen sizin için işe yaramayacaktır.

var page = new WebPage(), 

t, address; 


var fs = require('fs'); 

if (phantom.args.length === 0) { 

console.log('Usage: save.js <some URL>'); 
phantom.exit(); 
} else { 

address = encodeURI(phantom.args[0]); 
page.open(address, function (status) { 
    if (status !== 'success') { 
     console.log('FAIL to load the address'); 
    } else { 
     window.setTimeout(function(){ 
      f = null; 
      var markup = page.content; 
      console.log(markup); 
      try { 
      f = fs.open('htmlcode.txt', "w"); 
      f.write(markup); 
      f.close();   
      } catch (e) { 
       console.log(e); 
      } 
     } 
     phantom.exit(); 
    },2000); 
}); 

}