1
resposta

[Reclamação] Códigos do colab estao desatualizados

A alguns dias comecei esta formação AWS Data Lake e esta sendo um transtorno ter códigos do curso desatualizados . Olhei no fórum e outra pessoa pergunta quando haverá atualização e é informada que não há previsão !

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá, Fabiana, tudo bem?

O erro FileNotFoundError: [Errno 2] No such file or directory: 'data/dados_2015.csv' aconteceu porque o código que deveria baixar os arquivos CSV da internet não conseguiu salvar nenhum arquivo localmente.O que pode ter acontecido é que o urllib.request.urlretrieve() foi bloqueado pelo servidor do site da Prefeitura de Boston, gerando o erro HTTP Error 403: Forbidden.

Por que isso aconteceu?

Alguns sites bloqueiam acessos automáticos feitos por scripts que não parecem com navegadores. A função urlretrieve do Python envia uma requisição sem identificar o "User-Agent", o que fez o servidor recusar o download. Esse bloqueio é uma forma de proteção contra robôs.

Como podemos resolver?

A solução que encontrei foi usar a biblioteca requests, que permite personalizar os cabeçalhos da requisição (headers). Com isso, conseguimos simular o comportamento de um navegador adicionando um User-Agent, o que permite que o download seja aceito pelo servidor. Então peço que faça o seguinte ajuste.

  • Troque:
import urllib.request
#Módulo utilizado para fazer o download de dados de uma url

# Função para baixar dados de um URL e salvar em um arquivo
def extract_data(url, filename): #Parâmetros da função que espera 2 argumentos
    try:
        urllib.request.urlretrieve(url, filename)
        # Baixa o arquivo do URL e salva no local especificado
    except Exception as e:
        print(e) # Imprime qualquer erro que ocorra durante o processo

Por:

import requests

def extract_data(url, filename):
    try:
        headers = {'User-Agent': 'Mozilla/5.0'}  # Simula um navegador
        response = requests.get(url, headers=headers)
        response.raise_for_status()  # Gera erro se a resposta não for 200
        with open(filename, 'wb') as f:
            f.write(response.content)  # Salva o conteúdo no arquivo
        print(f"Arquivo salvo com sucesso: {filename}")
    except Exception as e:
        print(f"Erro ao baixar {filename}: {e}")

O que o código acima faz:

  1. A função extract_data recebe uma URL e o nome de um arquivo local.
  2. Envia uma requisição para a URL com um cabeçalho de navegador (User-Agent).
  3. Se a resposta for bem-sucedida (código 200), salva o conteúdo no arquivo especificado.
  4. Caso ocorra qualquer erro (como URL inválida ou erro 403), ele imprime a mensagem de erro.

Assim, você consegue baixar os dados corretamente e evitar o erro de "arquivo não encontrado" ao tentar carregá-los com pandas.

❗ Ao inserir o código acima é necessário que você reinicie o seu notebook e depois execute as células, seguindo os passos:

  1. No menu de ferramentas do Google Colaboratory, clicar em "Ambientes de execução";

  2. Selecionar a opção "Reiniciar sessão e executar tudo".

Para realizar essas etapas, você pode acompanhar a imagem abaixo:

Reiniciar sessão e executar tudo, no Google Colaboratory

Espero ter ajudado.

Qualquer dúvida, compartilhe no fórum.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!