Mekylei-Belchior / lotofacil

Jogando na Lotofácil utilizando rede neural.
GNU General Public License v3.0
62 stars 183 forks source link

scrapping_resultados não executa #7

Open afmota opened 1 year ago

afmota commented 1 year ago

Ocorre o seguinte erro:

OSError: Cannot save file into a non-existent directory: 'base'

quando scrapping_resultados.py é executado. Sou iniciante, mas iniciante mesmo no python e não faço ideia de como resolver isso.

brunohop commented 10 months ago

Alterei o arquivo para funcionar com a nova URL, que já baixa um excel. Então não precisa de scrapping em HTML. Depois faço um pull request. É só alterar o conteúdo para o abaixo.

from zipfile import ZipFile, is_zipfile from requests import get from io import BytesIO from pandas import read_html import pandas as pd

URL = 'https://servicebus2.caixa.gov.br/portaldeloterias/api/resultados/download?modalidade=Lotof%C3%A1cil'

def html_resultados(url): """ Obtém os dados de todos os sorteios da lotofácil.

:param url: Endereço para obter o arquivo ZIP
com os dados dos sorteios da lotofácil

:returns: Conteúdo HTML do arquivo ZIP

"""
resposta = get(url, stream = True, verify = False)
verifica_zip = is_zipfile(BytesIO(resposta.content))

if verifica_zip:
    arquivo = ZipFile(BytesIO(resposta.content))

    with arquivo as zip:
        dados = zip.read('d_lotfac.htm')
    zip.close

    return dados

html = pd.read_excel(URL) print(html)

Cria uma lista a partir da variável (html)

dados = html print(dados)

Obtém os dados de todos os sorteios

base = dados.iloc[:, [*[i for i in range(17)], 18]]

Remove dados duplicados

base = base.drop_duplicates('Concurso')

Renomeia as colunas do DataFrame

colunas = {'Bola1': 'B1', 'Bola2': 'B2', 'Bola3': 'B3', 'Bola4': 'B4', 'Bola5': 'B5', 'Bola6': 'B6', 'Bola7': 'B7', 'Bola8': 'B8', 'Bola9': 'B9', 'Bola10': 'B10', 'Bola11': 'B11', 'Bola12': 'B12', 'Bola13': 'B13', 'Bola14': 'B14', 'Bola15': 'B15', 'Ganhadores_15_Números': 'Ganhou'}

base.rename(columns=colunas, inplace=True)

Exporta os dados em arquivo CSV

base.to_csv('./base/resultados.csv', sep=';', encoding='utf8', index=False)

if name == 'main':

# Informações
concurso = base['Concurso'].max()
data = str(base[base['Concurso'] == concurso]['Data Sorteio'])[8:18]

print(f'\n\033[1;32mTODOS OS RESULTADOS DOS CONCURSOS DA LOTOFÁCIL FORAM BAIXADOS COM SUCESSO!\033[m')
print(f'\n\n\033[1;36mÚltimo sorteio:\033[m {data}\n\033[1;36mConcurso:\033[m {concurso}')

print(f'\n\n\033[1;35mArquivo salvo em:\033[m \033[1;33m./base/resultados.csv\033[m')