Created
February 27, 2014 06:05
Shell code for using PhantomJS-Node with Deferreds
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var Q = require("q"); | |
var phantom = require("phantom"); | |
var DomainScraper = function(){ | |
this.createPhantom = function(){ | |
var df = Q.defer(); | |
phantom.create(function(ph){ | |
df.resolve(ph); | |
}); | |
return df.promise; | |
}; | |
this.createPage = function(ph){ | |
var df = Q.defer(); | |
ph.createPage(function(page, err){ | |
df.resolve(page); | |
}); | |
return df.promise; | |
}; | |
this.openPage = function(page, url){ | |
var df = Q.defer(); | |
page.open(url, function(status) { | |
df.resolve( {page: page, status: status} ); | |
}); | |
return df.promise; | |
}; | |
this.screenshotPage = function( url ){ | |
var domainScraper = this; | |
var url = "http://" + this.domainList.pop(); | |
console.log( "Processing: " + url ); | |
var val = domainScraper | |
.createPage(domainScraper.ph) | |
.then(function(page){ | |
page.set("viewportSize", { width: 1600, height: 790 }); | |
return domainScraper.openPage(page, url); | |
}).then(function(obj){ | |
if( obj.status == "success" ){ | |
obj.page.render( url + ".png" ); | |
console.log("Rendered " + url); | |
} | |
return result; | |
}) | |
.done(function(){ | |
domainScraper.ph.exit(); | |
}); | |
}; | |
}; | |
var ds = new DomainScraper(); | |
ds.screenshotPage("http://www.setfive.com"); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment