Saltar al contenido

Error HTTP 403 en Python 3 Web Scraping

Te traemos el hallazgo a este conflicto, o por lo menos eso esperamos. Si continuas con dudas puedes dejarlo en el apartado de preguntas, que para nosotros será un gusto responderte

Solución:

Esto es probablemente debido a mod_security o alguna característica de seguridad del servidor similar que bloquee los agentes de usuario spider/bot conocidos (urllib usa algo como python urllib/3.3.0, se detecta fácilmente). Intente configurar un agente de usuario de navegador conocido con:

from urllib.request import Request, urlopen

req = Request('http://www.cmegroup.com/trading/products/#sortField=oi&sortAsc=false&venues=3&page=1&cleared=1&group=1', headers='User-Agent': 'Mozilla/5.0')
webpage = urlopen(req).read()

Esto funciona para mí.

Por cierto, en tu código te falta el () después .read en el urlopen línea, pero creo que es un error tipográfico.

CONSEJO: dado que esto es un ejercicio, elija un sitio diferente y no restrictivo. Tal vez estén bloqueando urllib por alguna razón…

Definitivamente está bloqueando debido a su uso de urllib basado en el agente de usuario. Me pasa lo mismo con OfferUp. Puede crear una nueva clase llamada AppURLopener que reemplaza al agente de usuario con Mozilla.

import urllib.request

class AppURLopener(urllib.request.FancyURLopener):
    version = "Mozilla/5.0"

opener = AppURLopener()
response = opener.open('http://httpbin.org/user-agent')

Fuente

“Esto probablemente se deba a mod_seguridad o alguna característica de seguridad del servidor similar que bloquee

araña/robot

agentes de usuario (urllib usa algo como python urllib/3.3.0, se detecta fácilmente)” – como ya lo mencionó Stefano Sanfilippo

from urllib.request import Request, urlopen
url="https://stackoverflow.com/search?q=html+error+403"
req = Request(url, headers='User-Agent': 'Mozilla/5.0')

web_byte = urlopen(req).read()

webpage = web_byte.decode('utf-8')

El web_byte es un objeto de byte devuelto por el servidor y el tipo de contenido presente en la página web es principalmente utf-8. Por lo tanto, debe decodificar web_byte utilizando el método de decodificación.

Esto resuelve el problema completo mientras intentaba eliminar de un sitio web usando PyCharm

PD -> Yo uso python 3.4

Aquí tienes las comentarios y valoraciones

Si estás de acuerdo, eres capaz de dejar un tutorial acerca de qué te ha impresionado de esta división.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *