Pessoal gostaria de extrair uns dados que estao como hiperlinks em xls e xlsx no site do IBAMA. A minha dificuldade é gravar esses arquivos no meu diretorio do jupyter notebook ou em um sqlite.
import requests
import os
from bs4 import BeautifulSoup, SoupStrainer
url = 'https://www.ibama.gov.br/agrotoxicos/relatorios-de-comercializacao-de-agrotoxicos#boletinsanuais'
#Determinando as extensões do arquivo de interesse
file_types = ['.xls', '.xlsx' ]
#Fazendo a requisição no site e criando o objeto beatifulsoup
response = requests.get(url, verify = False)
soup = BeautifulSoup(response.content, 'html.parser', parse_only=SoupStrainer('a'))
#Pegando todos links e separando os arquivos .xls e xlsx
links = []
for link in soup:
if link.has_attr('href'):
for file_type in file_types:
if link['href'].endswith(file_type):
links.append('https://www.ibama.gov.br' + link['href'])
#Conexão ao banco de dados
engine = create_engine('sqlite:///IBAMA.sqlite')
#Criando um diretório temporário
tempdir = tempfile.mkdtemp()
#Criando nome dos arquivos
file_name = []
for url in links:
print(' Buscando %s' % url)
_response = requests.get(url, verify = False)
file_name.append(url.split('/')[-1])
#Consultando o status_code da requisição
if response.status_code >= 300:
print(url, 'Falhou')
continue
# Manipula o arquivo temporário e carrega o dado
# with tempfile.TemporaryFile(suffix = '.xls', dir=tempdir) as arquivo:
# arquivo.write(_response.content)
# with open('test.xls', 'wb') as output:
# output.write(_response.content)
eu consigo separar os hiperlinks mais ao achei uma solução para gravar em diretorio .