Created
June 9, 2019 06:57
-
-
Save nacgarg/4a6537a27084c75425e6f78ca4063b6f to your computer and use it in GitHub Desktop.
Scrape PPs from ScoreSaber
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
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