Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Conexión a archivos en los desafios

He notado que cuando intento conectarme a archivos mediante un link web, me devuelve el error 403 y buscando el porqué y la solución entendí que debo trabajar con agentes para evitar el bloqueo de script simples de python al intentar concetarse a una url. Aquí le dejo un ejemplo de como lo he hecho en el desafío 2 Administración de Condominios en el módulo: Pandas: transformación y manipulación de datos.

#Importar biblioteca
import pandas as pd
import requests #// para crear agentes de conexión a datos web
#leer el archivo json con read_json

#Si el archivo está cargado en Colab
dfdesafio2 =pd.read_json('/content/inmuebles_disponibles.json')

#Si el archivo está en la web
url = 'https://cdn3.gnarususercontent.com.br/2928-transformacao-manipulacao-dados/dados_locacao_imoveis.json'
headers = {'User-Agent':'Mozilla/5.0'}
response = requests.get(url, headers=headers)
#cargamos el contenido a pandas
dfdesafio2_1 = pd.read_json(response.text) #// podemos hacerlo sin IO cuando son archivos pequeños
dfdesafio2_1.head()

#ahora vamos a normalizar el datafrane con la columna dados_locacao
dfdesafio2_1 = pd.json_normalize(dfdesafio2_1['dados_locacao'])
dfdesafio2_1.head()

1 respuesta

Hola Carlos, espero que estés bien

Parece que estás en el camino correcto al intentar resolver el problema de acceso a archivos web usando agentes de usuario. El error 403 generalmente ocurre cuando el servidor bloquea la solicitud debido a que no se proporciona un encabezado adecuado, como el 'User-Agent'. Al incluir este encabezado, estás simulando una solicitud de un navegador web, lo que puede ayudar a evitar el bloqueo.

Tu código parece bien estructurado para manejar la situación. Aquí tienes un ejemplo práctico de cómo podrías implementar esto en un entorno de trabajo:

import pandas as pd
import requests

# URL del archivo JSON
url = 'https://cdn3.gnarususercontent.com.br/2928-transformacao-manipulacao-dados/dados_locacao_imoveis.json'

# Encabezados para simular un navegador
headers = {'User-Agent': 'Mozilla/5.0'}

# Realizar la solicitud GET
response = requests.get(url, headers=headers)

# Verificar si la solicitud fue exitosa
if response.status_code == 200:
    # Cargar el contenido en un DataFrame de Pandas
    dfdesafio2_1 = pd.read_json(response.text)
    
    # Normalizar los datos
    dfdesafio2_1 = pd.json_normalize(dfdesafio2_1['dados_locacao'])
    print(dfdesafio2_1.head())
else:
    print(f"Error al acceder al archivo: {response.status_code}")

Este enfoque debería funcionar para acceder al archivo JSON y procesarlo con Pandas. Recuerda siempre verificar el código de estado de la respuesta para asegurarte de que la solicitud fue exitosa antes de intentar cargar los datos.

Espero que esta explicación te sea útil y te ayude a avanzar en tu proyecto. ¡Bons estudos!