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

leer una página html directamente en Wikipedia no funciona

He estado comprobando la forma de leer la página web https://es.wikipedia.org/wiki/Anexo:Países_y_territorios_dependientes_por_población y he generado código y probado el que la profesora en este foro propone:

import pandas as pd

url = "https://es.wikipedia.org/wiki/Anexo:Pa%C3%ADses_y_territorios_dependientes_por_poblaci%C3%B3n"

tablas = pd.read_html(url)

tabla_poblacion = tablas[0]

print(tabla_poblacion.head())

Pero siempre me da el error "HTTPError: HTTP Error 403: Forbidden".

Entiendo que el problema es que WIkipedia bloquea el acceso con Pandas, pero si es así, entonces como se realiza?

1 respuesta

Hola Carlos, espero que estés bien

Entiendo tu frustración con el error "HTTP Error 403: Forbidden". Este error generalmente ocurre porque el servidor web, en este caso Wikipedia, bloquea el acceso automatizado que no se identifica como un navegador web estándar. Afortunadamente, hay una manera de solucionar esto configurando el encabezado de la solicitud HTTP para que se parezca a una solicitud de un navegador.

Puedes intentar modificar tu código para incluir un encabezado User-Agent. Aquí tienes un ejemplo de cómo podrías hacerlo:

import pandas as pd
import requests

url = "https://es.wikipedia.org/wiki/Anexo:Pa%C3%ADses_y_territorios_dependientes_por_poblaci%C3%B3n"

# Definir el encabezado para parecer un navegador
headers = {'User-Agent': 'Mozilla/5.0'}

# Obtener el contenido de la página
response = requests.get(url, headers=headers)

# Leer las tablas de la página
tablas = pd.read_html(response.text)

# Seleccionar la primera tabla
tabla_poblacion = tablas[0]

# Mostrar las primeras filas de la tabla
print(tabla_poblacion.head())

En este código, utilizamos la biblioteca requests para obtener el contenido de la página web, especificando un User-Agent que simula ser un navegador. Luego, pasamos el contenido de la respuesta a pd.read_html() para extraer las tablas.

Espero que esta solución te ayude a avanzar en tu proyecto. ¡Bons estudios!