Igor, boa noite!
Vamos lá, abreviei meu código (abaixo) aqui para você me auxiliar. Basicamente, o que ele faz é acessar a tabela HTML da Caixa com resultado da loteria e colocar isso num DataFrame via Pandas. O código abaixo, num arquivo .ipynb roda perfeitamente no Jupyter e/ou Visual Code.
def frame_lotofacil ():
!pip install lxml
!pip install requests
!pip install mysql.connector
# Libs para extrair e manipular os dados
import urllib.request, urllib.parse, urllib.error
import requests, zipfile, io
import numpy as np
import pandas as pd
import os
import pathlib
from datetime import date
# Libs para conectar com MySQL
import mysql.connector
from mysql.connector import Error
# Download dos dados da LOTOFÁCIL no site da Caixa
url = 'http://www1.caixa.gov.br/loterias/_arquivos/loterias/D_lotfac.zip'
r = requests.get(url, stream =True)
check = zipfile.is_zipfile(io.BytesIO(r.content))
while not check:
r = requests.get(url, stream =True)
check = zipfile.is_zipfile(io.BytesIO(r.content))
else:
z = zipfile.ZipFile(io.BytesIO(r.content))
z.extractall()
# Criação do DataFrame, excluindo os dados duplicados e resetando o index.
lotofacil = pd.read_html('d_lotfac.htm', decimal=',')
lotofacil = pd.DataFrame(lotofacil[0])
lotofacil = lotofacil.drop_duplicates(subset='Concurso', keep='first')
lotofacil = lotofacil.reset_index(drop=True)
return lotofacil.tail()
frame_lotofacil()
Aí eu copiei o mesmo código e colei num arquivo com extensão .py, porém percebi que o mesmo não funciona. Pelo o que entendi, trata-se de um erro de sintaxe no código (me corrija se eu estiver errado rss). Me toquei disso quando você me questionou se eu havia convertido o arquivo para .py.
Minha pergunta: qual a forma correta para converter o arquivo .ipynb para .py?
Obrigado mais uma vez!