4
respostas

P

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
4 respostas

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

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

Poderiam me ajudar com este erro?

Ei, Guilherme! Tudo bem?

O código não conseguiu baixar o arquivo dados_2015.csv, gerando o erro FileNotFoundError: [Errno 2] No such file or directory: 'data/dados_2015.csv'. Isso aconteceu porque o servidor da Prefeitura de Boston bloqueou a requisição feita pela função urllib.request.urlretrieve().

Servidores muitas vezes rejeitam requisições de scripts que não se identificam como navegadores. A função urlretrieve não envia um cabeçalho "User-Agent", o que faz o servidor detectar a requisição como um bot e bloqueá-la.

Para conseguir baixar os arquivos recomendo que faça o seguinte:

  • Abra o notebook e encontre o código abaixo:
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
  • Ao encontrar, troque-o por esse:
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}")
  • Feito a troca, vá ao menu superior do notebook e clique em Ambiente de execução e, depois, em Reiniciar a sessão e executar tudo. Dessa forma o código completo será atualizado novamente.

Sobre o que o código que trocamos faz: A função extract_data recebe uma URL e o nome de um arquivo local. Ela envia uma requisição HTTP à URL usando um cabeçalho User-Agent para simular um navegador. Se a resposta for bem-sucedida (status 200), o conteúdo é salvo no arquivo especificado. Em caso de erros, como URL inválida ou erro 403, uma mensagem de erro é exibida. Assim, a função garante o download correto dos dados, evitando problema de "arquivo não encontrado" ao usar a biblioteca pandas.

Espero ter ajudado e qualquer dúvida, compartilhe no fórum.

Até mais e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado!