-
Notifications
You must be signed in to change notification settings - Fork 0
/
feriadossp.py
62 lines (52 loc) · 2.51 KB
/
feriadossp.py
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
import os
import requests
import gspread
import pandas as pd
import datetime
import gspread_dataframe as gsdf
import pytz
from datetime import datetime
from bs4 import BeautifulSoup
from oauth2client.service_account import ServiceAccountCredentials
# FAZENDO O SCRAPPING DOS DADOS DO SITE FERIADOS.COM.BR
url_ano_atual = 'https://www.feriados.com.br/feriados-sao_paulo-sp.php'
site_ano_atual = requests.get(url_ano_atual)
conteudo_ano_atual = site_ano_atual.content
html_feriados_ano_atual = BeautifulSoup(conteudo_ano_atual, "html.parser")
feriados_ano_atual = html_feriados_ano_atual.findAll('span', {'class':'style_lista_feriados'})
feriados_sp_ano_atual = []
for data in feriados_ano_atual:
feriado = data.text
feriados_sp_ano_atual.append(feriado)
facultativos_ano_atual = html_feriados_ano_atual.findAll('span', {'class':'style_lista_facultativos'})
facultativos_sp_ano_atual = []
for data in facultativos_ano_atual:
facultativo = data.text
facultativos_sp_ano_atual.append(facultativo)
datas_comemorativas_ano_atual = feriados_sp_ano_atual + facultativos_sp_ano_atual
ajuste_feriados_ano_atual = []
for linha in datas_comemorativas_ano_atual:
ajuste = linha.split(' - ')
ajuste_feriados_ano_atual.append(ajuste)
# CRIAÇÃO DE UM DATAFRAME COM AS DATAS COMEMORATIVAS
tabela_datas_comemorativas_ano_atual = pd.DataFrame(ajuste_feriados_ano_atual, columns=['Data', 'Comemoração'])
tabela_final = tabela_datas_comemorativas_ano_atual.drop_duplicates(subset='Data', keep='first').sort_values('Data')
tabela_final['Data'] = pd.to_datetime(tabela_final['Data'], format='%d/%m/%Y')
# AJUSTANDO O FUSO HORÁRIO
fuso = pytz.timezone('America/Sao_Paulo')
hoje = pd.Timestamp.now(tz=fuso)
# DESCOBRINDO QUANDO É O PRÓXIMO FERIADO
prox_feriado = tabela_final.loc[tabela_final['Data'] > pd.Timestamp.now(), 'Data'].sort_values().iloc[0]
descricao_feriado_sp = tabela_final.loc[tabela_final['Data'] == prox_feriado, 'Comemoração'].iloc[0]
prox_feriado_formatado_sp = prox_feriado.strftime('%d/%m/%Y')
#AUTORIZANDO GRAVAR OS DADOS EM UMA PLANILHA NO GOOGLE SHEETS
GOOGLE_SHEETS_CREDENTIALS = os.environ["GOOGLE_SHEETS_CREDENTIALS"]
with open("credenciais.json", mode="w") as arquivo:
arquivo.write(GOOGLE_SHEETS_CREDENTIALS)
conta = ServiceAccountCredentials.from_json_keyfile_name("credenciais.json")
api = gspread.authorize(conta)
planilha = api.open_by_key("1zI16LZUgnR-1Xr3MqsjdV6wtyYNMiPpVuxdUVoXYuA4")
sheet = planilha.worksheet("SP")
#GRAVANDO OS DADOS NA PLANILHA)
sheet.clear()
gsdf.set_with_dataframe(sheet, tabela_final)