2012-01-01 18 views
6

डिजीकी ने अपनी वेबसाइट बदल दी है और अब एक जावास्क्रिप्ट है जिसे पोस्ट के माध्यम से ऑनलोड कहा जाता है। इसने मेरे पूर्व साधारण जावा एचटीएमएल कोड रेट्रिवर को मार डाला। मैं HTML/टेक्स्ट को सहेजने से पहले जावास्क्रिप्ट के निष्पादन की अनुमति देने के लिए फ़ैंटॉमजेएस का उपयोग करने की कोशिश कर रहा हूं।फ़ैंटॉमजेएस पेज डंप स्क्रिप्ट समस्या

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

}); 

} 

इस कोड को अधिकांश वेब पृष्ठ के साथ काम करता है, लेकिन पर विफल रहता है:

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

कौन सा अपने परीक्षण मामला है। यह यूआरएल खोलने में विफल रहता है और फिर फैंटॉमजेएस दुर्घटनाग्रस्त हो जाता है। Win32 स्थैतिक निर्माण 1.3 का उपयोग करना।

कोई सुझाव?

मूल रूप से जो मैं बाद में हूं वह पृष्ठ है जो पृष्ठ को सहेजने से पहले दस्तावेज़ को संशोधित करने वाले पृष्ठ प्रतिपादन और स्क्रिप्ट को प्रतिस्पर्धा करता है।

उत्तर

1

एक त्वरित गंदे समाधान ... और अभी तक phantomjs साइट पर पोस्ट किया गया है ... एक समय का उपयोग करना है। मैंने 2 सेकंड प्रतीक्षा करने के लिए अपना कोड संशोधित किया है। यह पृष्ठ को सामग्री को डंप करने से पहले पृष्ठ को 2 सेकंड तक लोड करने की अनुमति देता है। यदि आपको सटीक दूसरे की आवश्यकता है या समय की मात्रा बहुत भिन्न हो जाएगी तो यह समाधान शायद आपके लिए काम नहीं करेगा।

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

}