python urllib2 pythonanywhere

abrir url de pythonanywhere



urllib2 (3)

Las cuentas gratuitas en PythonAnywhere están restringidas a una whitelist de sitios, solo http / https, y el acceso se realiza a través de un proxy. Hay más información aquí:

Wiki de PythonAnywhere: "¿por qué obtengo un error prohibido 403 al abrir una URL?"

Este código funciona bien en mi máquina local, pero cuando lo subo y ejecuto en pythonanywhere.com me da este error.
Mi código:

url = "http://www.codeforces.com/api/contest.list?gym=false" hdr = {''User-Agent'': ''Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11'', ''Accept'': ''text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'', ''Accept-Charset'': ''ISO-8859-1,utf-8;q=0.7,*;q=0.3'', ''Accept-Encoding'': ''none'', ''Accept-Language'': ''en-US,en;q=0.8'', ''Connection'': ''keep-alive''} req = urllib2.Request(url, headers=hdr) opener = urllib2.build_opener() openedReq = opener.open(req, timeout=300)

El error:

Traceback (most recent call last): File "/home/GehadAbdallah/main.py", line 135, in openApi openedReq = opener.open(req, timeout=300) File "/usr/lib/python2.7/urllib2.py", line 410, in open response = meth(req, response) File "/usr/lib/python2.7/urllib2.py", line 523, in http_response ''http'', request, response, code, msg, hdrs) File "/usr/lib/python2.7/urllib2.py", line 448, in error return self._call_chain(*args) File "/usr/lib/python2.7/urllib2.py", line 382, in _call_chain result = func(*args) File "/usr/lib/python2.7/urllib2.py", line 531, in http_error_default raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) urllib2.HTTPError: HTTP Error 403: Forbidden

PD: estoy trabajando en Python 2.7


Recientemente utilicé urllib2 con un proyecto de matraz en pythonanywhere usando su cuenta gratuita para acceder a una api en donorschoose.org

Esto puede ser útil

@app.route(''/funding'') def fundingByState(): urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler({''http'': ''proxy.server:3128''}))) donors_choose_url = "http://api.donorschoose.org/common/json_feed.html?historical=true&APIKey=DONORSCHOOSE" response = urllib2.urlopen(donors_choose_url) json_response = json.load(response) return json.dumps(json_response)

Esto funciona


Si está utilizando una cuenta paga pero aún recibe este mensaje de error, pruebe este pythonanywhere_forums

Para mí, tengo que eliminar la consola y luego reiniciar una nueva.