Created
November 12, 2013 20:18
-
-
Save SlexAxton/7437934 to your computer and use it in GitHub Desktop.
Scrape some country data
This file contains hidden or 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
// First run: `npm install request q` | |
var request = require('request'); | |
var Q = require('q'); | |
var COUNTRIES = ['US']; | |
var BASE_URL = 'http://i18napis.appspot.com/address/data/' | |
function scrape(countries, cb) { | |
var datapromises = countries.map(function(country){ | |
var dfd = Q.defer(); | |
request(BASE_URL + country, function(err, response, body){ | |
if (err) { | |
console.log('!!!!!! Fail: ', country); | |
return dfd.fail(); | |
} | |
dfd.resolve(JSON.parse(body)); | |
}); | |
return dfd.promise; | |
}); | |
Q.spread(datapromises, function(){ | |
var countryData = [].slice.apply(arguments); | |
cb(countryData.map(shittySchemaParse)); | |
}) | |
} | |
function shittySchemaParse(country) { | |
country.sub_keys = country.sub_keys.split('~'); | |
country.sub_names = country.sub_names.split('~'); | |
country.sub_zips = country.sub_zips.split('~'); | |
country.sub_zipexs = country.sub_zipexs.split('~'); | |
country.subs = {}; | |
country.sub_keys.forEach(function(key, idx){ | |
country.subs[key] = country.sub_names[idx]; | |
}); | |
return country; | |
} | |
scrape(COUNTRIES, function(countries) { | |
console.log(countries); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment