2013-04-27 209 views
3

我是一個Python新手,我剛剛試圖讓一些代碼工作。Python HTTP錯誤403禁止

下面是代碼,也是我不斷收到的令人討厭的錯誤。

import pywapi import string 

google_result = pywapi.get_weather_from_google('Brisbane') 

print google_result 
def getCurrentWather(): 
    city = google_result['forecast_information']['city'].split(',')[0] 
    print "It is " + string.lower(google_result['current_conditions']['condition']) + " and 
    " + google_result['current_conditions']['temp_c'] + " degree 
    centigrade now in "+ city+".\n\n" 
    return "It is " + string.lower(google_result['current_conditions']['condition']) + " and 
    " + google_result['current_conditions']['temp_c'] + " degree 
    centigrade now in "+ city 

def getDayOfWeek(dayOfWk): 
    #dayOfWk = dayOfWk.encode('ascii', 'ignore') 
    return dayOfWk.lower() 

def getWeatherForecast(): 
    #need to translate from sun/mon to sunday/monday 
    dayName = {'sun': 'Sunday', 'mon': 'Monday', 'tue': 'Tuesday', 'wed': 'Wednesday', ' thu': 'Thursday', 'fri': 'Friday', 'sat': 
    'Saturday', 'sun': 'Sunday'} 

forcastall = [] 
for forecast in google_result['forecasts']: 
    dayOfWeek = getDayOfWeek(forecast['day_of_week']); 
    print " Highest is " + forecast['high'] + " and "+ "Lowest is " + forecast['low'] + " on " + dayName[dayOfWeek] 
    forcastall.append(" Highest is " + forecast['high'] + " and "+ "Lowest is " + forecast['low'] + " on " + dayName[dayOfWeek]) 
return forcastall 

現在是錯誤:

Traceback (most recent call last): File 
"C:\Users\Alex\Desktop\JAVIS\JAISS-master\first.py", line 5, in 
<module> 
import Weather File "C:\Users\Alex\Desktop\JAVIS\JAISS-master\Weather.py", line 4, in 
<module> 
google_result = pywapi.get_weather_from_google('Brisbane') File "C:\Python27\lib\site-packages\pywapi.py", line 51, in 
get_weather_from_google 
handler = urllib2.urlopen(url) File "C:\Python27\lib\urllib2.py", line 126, in urlopen 
return _opener.open(url, data, timeout) File "C:\Python27\lib\urllib2.py", line 400, in open 
response = meth(req, response) File "C:\Python27\lib\urllib2.py", line 513, in http_response 
'http', request, response, code, msg, hdrs) File "C:\Python27\lib\urllib2.py", line 438, in error 
return self._call_chain(*args) File "C:\Python27\lib\urllib2.py", line 372, in _call_chain 
result = func(*args) File "C:\Python27\lib\urllib2.py", line 521, in http_error_default 
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) HTTPError: HTTP Error 403: Forbidden 

感謝所有幫助我能!

+1

請根據Pythonic約定格式化您的代碼,然後我們可能會幫助您。 – 2013-04-27 08:53:38

回答

0

我使用Python3和有同樣的問題。我發現Google阻止了不覆蓋User-Agent和Accept-Encoding標頭的urllib。

它用於測試搜索的標題:

GET /search?q=f1+2015 HTTP/1.1 
Accept-Encoding: identity 
Connection: close 
User-Agent: Python-urllib/3.4 
Host: 127.0.0.1:8076 

我把「接受編碼」到「」和「用戶代理」,以「測試」和403錯誤而停止。