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.