Thursday, 27 April 2017

Javascript Node Js & Cheerio web scraper creating object with data

I'm building a simple web scraper using cheerio, this is my code :

var express = require('express');
var fs = require('fs');
var request = require('request');
var cheerio = require('cheerio');
var app     = express();

app.get('/', function(req, res){

url = 'http://www.gazzetta.it/calcio/fantanews/voti/serie-a-2016-17/giornata-32';

request(url, function(error, response, html){
  if(!error){

  var $ = cheerio.load(html);
  var json = {

    teamsList : {}

  };

  $('.listView .magicTeamList').each(function(index, value){

      var teamName = $(this).find('.teamNameIn').text();
      var playerName = $(this).find('.playerNameIn').text();
      var playerGrade = $(this).find('.fvParameter').not('.head').text();

      json.teamsList[teamName] = {};
      json.teamsList[teamName][playerName] = playerGrade;

  })

  } else {

    console.log('error happened :' + error);

  }

  fs.writeFile('output.json', JSON.stringify(json, null, 4), function(err){

    console.log('File successfully written! - Check your project directory for the output.json file');

  })

// Finally, we'll just send out a message to the browser reminding you that this app does not have a UI.
  res.send('Check your console!')

  });
})

app.listen(8081);
console.log('Magic happens on port 8081');
exports = module.exports = app;

I want to push data inside the json object but I'm not having the desired effect, the output.json i get is this (i'll just paste an excerpt of the result):

{
"teamsList": {
    "atalanta": {
        "Gollini P.Masiello A.Conti A.Hateboer H.Caldara M.Toloi R.Kurtic J.Cristante B.Freuler R.Kessie F.Petagna A.Dalessandro M.Cabezas B.Paloschi A.": "4.56.57.55.5779667666-"
    },
    "bologna": {
        "Mirante A.Torosidis V.Maietta D.Masina A.Gastaldello D.Pulgar E.Taider S.Dzemaili B.Verdi S.Di Francesco F.Petkovic B.Krafth E.Krejci L.Sadiq U.": "5.5665.5636.565.556--5.5"
    }
  }
}

But what i want is an output like this:

{
"teamsList": {
    "atalanta": {
        "Gollini" : 4.5,
        "P.Masiello" : 6.5,
        ...
    }
  }
}

I've searched for answers but I couldn't find any for my specific problem, or maybe I'm just missing something very stupid.. btw any help would be appreciated, thx guys



via Nes Suno

No comments:

Post a Comment