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.