2015-09-15 103 views
2

這段代碼在我的本地機器上運行良好,但是當我在pythonanywhere.com上載並運行它時,它給了我這個錯誤。
我的代碼:從pythonanywhere打開url

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) 

錯誤:

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 

附:我正在使用python 2.7

+0

你不能讀取錯誤嗎?它是一個403禁止的。 Pythonanywhere.com停止任何傳出連接。 (也許只有http的但仍然) – Ronnie

+0

@羅尼,我該怎麼做才能啓用傳出連接? –

+0

我不知道。我不知道他們的政策。聯繫他們並要求他們啓用。防火牆阻止了你,沒有這個,你不能。看,這種類型的問題不是一個合適的編程問題。我們不關心/瞭解你的目標機器,你甚至不知道目標機器。 – Ronnie

回答

1

最近我使用他們的免費帳戶donorschoose.org

這可能是有益的訪問API使用的urllib2與pythonanywhere燒瓶項目,

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

這是行不通的。

0

如果您使用支付帳戶,但仍收到此錯誤信息 試試這個pythonanywhere_forums

對我來說,我已經刪除了控制檯,然後重新啓動一個新的。