Skip to content

Instantly share code, notes, and snippets.

@gasolin
Created April 23, 2014 10:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gasolin/11209737 to your computer and use it in GitHub Desktop.
Save gasolin/11209737 to your computer and use it in GitHub Desktop.
var http = require("http");
var cheerio = require("cheerio");
/**
* Utility function that downloads a URL and invokes
* callback with the data.
*/
function download(url, callback) {
http.get(url, function(res) {
var data = "";
res.on('data', function (chunk) {
data += chunk;
});
res.on("end", function() {
callback(data);
});
}).on("error", function() {
callback(null);
});
}
// DO THE JOB
var url = "http://axe-level-1.herokuapp.com/";
var resultJson = [];
var column_title = [];
download(url, function(data) {
if (data) {
// console.log(data);
var $ = cheerio.load(data);
$("tr").each(function(i, e) {
if(i === 0) {
var columns0 = $(e).find("td");
columns0.each(function(j, e) {
var order = j+1;
if(order > 1) {
column_title.push($(e).text());
}
});
console.log(column_title);
} else {
var columns = $(e).find("td");
// column holder
var person = {name: "", grades: {}};
columns.each(function(j, e) {
if (j === 0) {
person.name = $(e).text();
} else {
person.grades[column_title[j-1]] = parseInt($(e).text());
}
});
resultJson.push(person);
}
});
console.log(JSON.stringify(resultJson));
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment