-
Notifications
You must be signed in to change notification settings - Fork 5
/
scraper.js
81 lines (60 loc) · 2.57 KB
/
scraper.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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
'use strict'
const fetch = require("node-fetch")
var sqlite3 = require('sqlite3')
async function main() {
/* 1. Requisição dos arquivos */
console.info('Requisitando os arquivos...')
let requests_datetime = new Date()
const API_MERCADO_STATUS = 'https://api.cartolafc.globo.com/mercado/status'
const API_ATLETAS_MERCADO = 'https://api.cartolafc.globo.com/atletas/mercado'
const API_ATLETAS_PONTUADOS = 'https://api.cartolafc.globo.com/atletas/pontuados'
const API_PARTIDAS = 'https://api.cartolafc.globo.com/partidas'
const API_CLUBES = 'https://api.cartolafc.globo.com/clubes'
const fetchOptions = {
method: 'GET',
headers: {
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36'
}
}
console.info('Requisitando API_MERCADO_STATUS...')
const mercado_status = await fetch(API_MERCADO_STATUS, fetchOptions).then((res) => res.text())
console.info('API_MERCADO_STATUS obtido com sucesso.')
console.info('Requisitando API_ATLETAS_MERCADO...')
const atletas_mercado = await fetch(API_ATLETAS_MERCADO, fetchOptions).then((res) => res.text())
console.info('API_ATLETAS_MERCADO obtido com sucesso.')
console.info('Requisitando API_PARTIDAS...')
const partidas = await fetch(API_PARTIDAS, fetchOptions).then((res) => res.text())
console.info('API_PARTIDAS obtido com sucesso.')
console.info('Requisitando API_CLUBES...')
const clubes = await fetch(API_CLUBES, fetchOptions).then((res) => res.text())
console.info('API_CLUBES obtido com sucesso.')
// Parciais nem sempre estão disponiveis
console.info('Requisitando API_ATLETAS_PONTUADOS...')
const atletas_pontuados = await fetch(API_ATLETAS_PONTUADOS).then((res) => res.text())
console.info('API_ATLETAS_PONTUADOS obtido com sucesso.')
console.info('Arquivos requisitados com sucesso.')
/* 2. Armazena arquivos no DB */
console.info('Armazenando dados no banco de dados...')
const dbFilename = 'data.sqlite'
const db = new sqlite3.Database(dbFilename);
// Cria tabela se não existir
db.run(`
CREATE TABLE IF NOT EXISTS data
(
DataHora TEXT,
API_MERCADO_STATUS TEXT,
API_ATLETAS_MERCADO TEXT,
API_ATLETAS_PONTUADOS TEXT,
API_PARTIDAS TEXT,
API_CLUBES TEXT
)
`)
// Insere dados
db.prepare("INSERT INTO data VALUES (?, ?, ?, ?, ?, ?)")
.run(requests_datetime.toISOString(), mercado_status, atletas_mercado,
atletas_pontuados, partidas, clubes)
.finalize()
db.close()
console.info('Dados armazenados no banco de dados com sucesso.')
}
main()