beagle
Version:
Release a Beagle dog to scrape a web site for you.
51 lines (43 loc) • 1.14 kB
JavaScript
var Bone = require('./bone.js'),
request = require('request');
function doRequest(options, callback){
request(options, function (error, response, body) {
if (error) {
callback(error);
return;
}
callback(null, response);
});
}
function isValidResponse(obj){
return (
obj.hasOwnProperty('request')
&& obj.hasOwnProperty('body')
) ? true: false;
}
module.exports = {
scrape: function(options, callback){
if (isValidResponse(options)) {
callback(null, new Bone(options));
return;
}
else {
if (typeof options === 'string') {
options.url = options;
options.headers = {'User-Agent': 'Chrome/21'};
}
else if (typeof options === 'object' && !options.url && !options.uri) {
callback(new Error("cannot scrape that, expected property 'url' or 'uri'"));
return;
}
doRequest(options, function(err, response){
if (err) {
callback(err);
return;
}
callback(null, new Bone(response));
});
return;
}
}
};