Skip to content

Instantly share code, notes, and snippets.

@nacgarg
Created June 9, 2019 06:57
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 nacgarg/4a6537a27084c75425e6f78ca4063b6f to your computer and use it in GitHub Desktop.
Save nacgarg/4a6537a27084c75425e6f78ca4063b6f to your computer and use it in GitHub Desktop.
Scrape PPs from ScoreSaber
const request = require('request');
const parse = require('node-html-parser').parse;
const fs = require('fs');
const Promise = require('bluebird');
const LAST_PAGE = 3820
var getPPs = function(pageNum, file) {
// return an array of PPs on that page
return new Promise((resolve, reject) => {
console.log(pageNum)
request('https://scoresaber.com/global/'+pageNum, (err, res, body) => {
if (err) { reject(err) }
const root = parse(body);
let pps = root.querySelectorAll('.ppValue').map(e=>parseFloat(e.rawText.replace(/,/g, '')));
fs.writeFileSync(file, pps.join("\n")+"\n")
resolve(pps);
});
})
}
outFile = fs.openSync('data.csv', 'a')
pages = []
for (var i = 1; i < LAST_PAGE; i++) {
pages.push(i)
}
Promise.map(pages, function (i) {
return getPPs(i, outFile);
}, {concurrency: 5})
.then(function(allResults){
console.log(allResults)
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment