Guest User

Untitled

a guest
Feb 14th, 2014
375
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var page = require('webpage').create(),
  2.     fs = require('fs'),
  3.     system = require('system');
  4.  
  5. if (system.args.length < 2) {
  6.   console.log("Usage: savePage.js URL [filename]");
  7.   phantom.exit();
  8. }
  9. else {
  10.   var address = system.args[1].replace(/^\/\/|^(?!https?:\/\/)/, 'http:\/\/'),
  11.       output = system.args[2] || '',
  12.       outputStream;
  13.      
  14.   page.onResourceReceived = function(response) {
  15.     if (response.url === page.url) {
  16.       if (response.status === 200) {
  17.         for (var i = 0; i < response.headers.length; i++) {
  18.           if (response.headers[i].name === 'Content-Disposition'
  19.            && response.headers[i].value.indexOf('filename') >= 0) {
  20.             output = decodeURI(response.headers[i].value.match(/filename="?([^;"]+)"?/)[1]);
  21.           }
  22.         }
  23.       }
  24.     }
  25.   };
  26.  
  27.   page.onUrlChanged = function (newUrl) {
  28.     console.log('Connecting to ' + newUrl);
  29.   }
  30.    
  31.   page.open(address, function (status) {
  32.     if (status !== 'success') {
  33.       console.log('Unable to load ' + address + '!');
  34.       phantom.exit();
  35.     }
  36.     else {
  37.       window.setTimeout(function () {
  38.         var pageName, i = 0;
  39.           if (!output) {
  40.             pageName = page.url.match(/\/([^\/]+)$/);
  41.             if (pageName && pageName[1]) {
  42.               output = decodeURI(pageName[1]);
  43.             }
  44.             else output = 'saved_page';
  45.           }
  46.           while (output && fs.exists(output) && ++i) {
  47.               output = output.replace(/(?: \(\d+\))?(\.[^.]*)?$/, ' (' + i + ')$1');
  48.               console.log('file exists. trying "' + output + '"...');
  49.           }
  50.           try {
  51.             outputStream = fs.open(output, 'w');
  52.           }
  53.           catch (e) {
  54.             console.log(e);
  55.             console.log('trying filename "saved_page"...');
  56.             output = 'saved_page';
  57.             i = 0;
  58.             while (fs.exists(output) && ++i) {
  59.               output = output.replace(/(?: \(\d+\))?$/, ' (' + i + ')');
  60.               console.log('filename exists. trying "' + output + '"...');
  61.             }
  62.             try {
  63.               outputStream = fs.open(output, 'w');
  64.             }
  65.             catch (e) {
  66.               console.log(e);
  67.               console.log('Cannot open file. Exit program.');
  68.               phantom.exit();
  69.             }
  70.           }
  71.           outputStream.write(page.content);
  72.           console.log('Done!');
  73.           phantom.exit();
  74.       }, 200);
  75.     }
  76.   });
  77. }
Advertisement
Add Comment
Please, Sign In to add comment