UNPKG

brasileirao-api

Version:

A crawler that provider an open API to get brasileirao matches and scores

40 lines (34 loc) 1.57 kB
import request from 'request-promise' import cheerio from 'cheerio' let ranking = [] let $ = undefined const url = serie => `http://globoesporte.globo.com/futebol/brasileirao-serie-${serie}` const transformFn = function(body) { return $ = cheerio.load(body) } const withOptions = serie => ({ method: 'GET', uri: url(serie), transform: transformFn }) const searchPattern = (index, col) => `.tabela-pontos > tbody tr:nth-child(${index + 1}) > td:nth-child(${col})` const pushToList = function(index, element) { let row = $(element) return ranking.push({ posicao : row.find('.tabela-times-posicao').text(), time : row.find('.tabela-times-time > a').attr('title'), pontos : parseInt($(searchPattern(index, 1)).text()), jogos : parseInt($(searchPattern(index, 2)).text()), vitorias : parseInt($(searchPattern(index, 3)).text()), empates : parseInt($(searchPattern(index, 4)).text()), derrotas : parseInt($(searchPattern(index, 5)).text()), golsPro : parseInt($(searchPattern(index, 6)).text()), golsContra : parseInt($(searchPattern(index, 7)).text()), saldoGols : parseInt($(searchPattern(index, 8)).text()), percentual : parseFloat($(searchPattern(index, 9)).text()) }) } const getRanking = $ => $('.tabela-times > tbody tr').each(pushToList) const search = serie => request(withOptions(serie)) .then(getRanking) .then(() => { console.log('You have successful in your search') return ranking }) export default function(serie) { return search(serie) }