Olá pessoal, para quem está fazendo o curso de Data Lake na AWS, possivelmente travou na etapa de extração dos dados da DataBoston com o seguinte erro:
[ERRO] HTTP Error 403: Forbidden
Esse erro não está relacionado a problema no código em si, mas sim a uma restrição de acesso imposta pelo próprio site da DataBoston (provavelmente adicionada após o lançamento do curso) para bloquear acessos automatizados genéricos e priorizar acessos feitos por navegadores reais.
Esse tipo de erro é relativamente comum e acontece quando o servidor exige headers HTTP, especialmente o User-Agent, que funciona como uma identificação de quem está fazendo o request. Não só isso, tive que colocar um Accept dentro do header, esse parâmetro informa ao servidor que esperamos receber um arquivo CSV
Esses headers fazem o request se comportar como um acesso legítimo.
Para resolver, basta adaptar o código adicionando um Header, conforme o exemplo abaixo:
import requests
def extract_data(url, filename):
headers = {
"User-Agent": "Mozilla/5.0",
"Accept": "text/csv"
}
response = requests.get(url, headers=headers, stream=True)
if response.status_code == 200: # verifica se o servidor respondeu com sucesso
with open(filename, "wb") as f: #Cria (ou sobrescreve) um arquivo local
for chunk in response.iter_content(chunk_size=8192): # Lê o arquivo em blocos de 8 KB e grava no disco.
f.write(chunk)
else:
print("Erro:", response.status_code)
Espero ter ajudado!