-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathscrape-vaingloryfire-heroes-list.js
46 lines (40 loc) · 1.25 KB
/
scrape-vaingloryfire-heroes-list.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// scrape https://www.vaingloryfire.com/vainglory/wiki/heroes for list of heroes and individual stats
// scrape https://www.vaingloryfire.com/vainglory/wiki/heroes/adagio/abilities for description
var settings = require("./settings.json");
var htmlToJson = require('html-to-json');
var fs = require('fs');
var util = require('util');
var linkParser = htmlToJson.createParser(['.card-wrap', {
'parent': function ($doc, $) {
return $doc.parent().attr('class');
},
'card': function ($doc, $) {
var s = $doc.text();
return s.trim();
},
'url': function ($doc, $) {
return $doc.find('a[href]').attr('href');
},
'img': function ($doc, $) {
return $doc.find('a[href]').find('img').attr('src');
}
}]);
linkParser.request(settings['main_url'] + settings['path_heroes']).done(function (links) {
//console.log(links);
var filtered = links.filter(
function(elem, index, array){
//console.log(elem);
return elem['parent'] == 'grid';
});
//console.log(filtered);
var list_of_heroes = filtered.map(
function(elem) {
delete elem.parent;
elem.hero = elem.card;
delete elem.card;
return elem;
});
console.log(list_of_heroes);
// save to .json
fs.writeFileSync(settings['list_of_heroes_json'], JSON.stringify(list_of_heroes) , 'utf-8');
});