open url from pythonanywhere

半城伤御伤魂 提交于 2019-11-26 08:36:19

问题


This code works well on my local machine, but when I upload and run it on pythonanywhere.com it gives me this error.
My Code:

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)

The 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

P.S. i\'m working on python 2.7


回答1:


Free accounts on PythonAnywhere are restricted to a whitelist of sites, http/https only, and access goes via a proxy. There's more info here:

PythonAnywhere wiki: "why do I get a 403 forbidden error when opening a url?"




回答2:


I recently used urllib2 with a flask project on pythonanywhere using their free account to access an api at donorschoose.org

This might be helpful,

@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)

This does work.




回答3:


If you're using paid account but still get this error message try this pythonanywhere_forums

To me, I have to delete the console then restart a new one.



来源:https://stackoverflow.com/questions/32597390/open-url-from-pythonanywhere

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!