Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python HTTP Error 403 Forbidden

I am a bit of a Python Newbie, and I've just been trying to get some code working.

Below is the code, and also the nasty error I keep getting.

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

Now is the error:

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

Thanks for any help I can get!

like image 369
Aloogy Avatar asked Dec 02 '25 10:12

Aloogy


2 Answers

The 403 error doesn't come from your code but from Google. Google lets you know that you don't have permission to access the resource you were requesting, in this case the weather API, because it has been discontinued (403 technically stands for Forbidden, they could also have gone for 404 Not Found or 410 Gone).

For more information, read http://thenextweb.com/google/2012/08/28/did-google-just-quietly-kill-private-weather-api/

Other than that, your code is correct.

like image 199
Wander Nauta Avatar answered Dec 05 '25 00:12

Wander Nauta


It's not your error. Google discontinued its weather API a few time ago.

If you need a free weather API I would recommend using the service I'm building, Metwit weather API. This is the simplest working example using metwit-weather:

from metwit import Metwit
weather = Metwit.weather.get(location_lat=45.45, location_lng=9.18)

Further examples are found here: http://soup.metwit.com/post/45997437810/python-weather-by-metwit

like image 35
Davide R. Avatar answered Dec 05 '25 01:12

Davide R.



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!