Once you have installed pywapi with pip, open a ipython shell and explore what pywapi
can do. Here's an example which actually gives you what you want:-
In [1]: import pywapi
In [2]: pywapi.
pywapi.GOOGLE_CITIES_URL pywapi.YAHOO_WEATHER_URL pywapi.get_weather_from_weather_com pywapi.urlopen
pywapi.GOOGLE_COUNTRIES_URL pywapi.getText pywapi.get_weather_from_yahoo pywapi.wind_beaufort_scale
pywapi.NOAA_WEATHER_URL pywapi.get_cities_from_google pywapi.minidom pywapi.wind_direction
pywapi.URLError pywapi.get_countries_from_google pywapi.quote pywapi.xml_get_attrs
pywapi.WEATHER_COM_URL pywapi.get_everything_from_yahoo pywapi.re pywapi.xml_get_ns_yahoo_tag
pywapi.YAHOO_WEATHER_NS pywapi.get_weather_from_noaa pywapi.sys pywapi.yield_all_country_city_codes_yahoo
In [2]: pywapi.get_weather_from_yahoo?
Type: function
String Form:<function get_weather_from_yahoo at 0x10daeb9b0>
File: /Users/calvin/.virtualenvs/myweather/lib/python2.7/site-packages/pywapi.py
Definition: pywapi.get_weather_from_yahoo(location_id, units='metric')
Docstring:
Fetches weather report from Yahoo! Weather
Parameters:
location_id: A five digit US zip code or location ID. To find your location ID,
browse or search for your city from the Yahoo! Weather home page (http://weather.yahoo.com/)
The weather ID is in the URL for the forecast page for that city. You can also get
the location ID by entering your zip code on the home page. For example, if you
search for Los Angeles on the Weather home page, the forecast page for that city
is http://weather.yahoo.com/forecast/USCA0638.html. The location ID is USCA0638.
units: type of units. 'metric' for metric and '' for non-metric
Note that choosing metric units changes all the weather units to metric,
for example, wind speed will be reported as kilometers per hour and
barometric pressure as millibars.
Returns:
weather_data: a dictionary of weather data that exists in XML feed.
See http://developer.yahoo.com/weather/#channel
In [3]: pywapi.get_weather_from_yahoo('USCA0638')
Out[3]:
{'astronomy': {'sunrise': u'6:16 am', 'sunset': u'7:28 pm'},
'atmosphere': {'humidity': u'67',
'pressure': u'1013.7',
'rising': u'1',
'visibility': u'16.09'},
'condition': {'code': u'33',
'date': u'Sat, 20 Apr 2013 9:46 pm PDT',
'temp': u'18',
'text': u'Fair',
'title': u'Conditions for Los Angeles, CA at 9:46 pm PDT'},
'forecasts': [{'code': u'31',
'date': u'20 Apr 2013',
'day': u'Sat',
'high': u'26',
'low': u'15',
'text': u'Clear'},
{'code': u'32',
'date': u'21 Apr 2013',
'day': u'Sun',
'high': u'26',
'low': u'14',
'text': u'Sunny'},
{'code': u'34',
'date': u'22 Apr 2013',
'day': u'Mon',
'high': u'22',
'low': u'13',
'text': u'Mostly Sunny'},
{'code': u'30',
'date': u'23 Apr 2013',
'day': u'Tue',
'high': u'21',
'low': u'14',
'text': u'Partly Cloudy'},
{'code': u'30',
'date': u'24 Apr 2013',
'day': u'Wed',
'high': u'19',
'low': u'13',
'text': u'Partly Cloudy'}],
'geo': {'lat': u'34.05', 'long': u'-118.23'},
'html_description': u'\n[![][5]][5]<br />\n<b>Current Conditions:</b><br />\nFair, 18 C<BR />\n<BR /><b>Forecast:</b><BR />\nSat - Clear. High: 26 Low: 15<br />\nSun - Sunny. High: 26 Low: 14<br />\nMon - Mostly Sunny. High: 22 Low: 13<br />\nTue - Partly Cloudy. High: 21 Low: 14<br />\nWed - Partly Cloudy. High: 19 Low: 13<br />\n<br />\n<a href="http://us.rd.yahoo.com/dailynews/rss/weather/Los_Angeles__CA/*http://weather.yahoo.com/forecast/USCA0638_c.html">Full Forecast at Yahoo! Weather</a><BR/><BR/>\n(provided by <a href="http://www.weather.com" >The Weather Channel</a>)<br/>\n',
'link': u'http://us.rd.yahoo.com/dailynews/rss/weather/Los_Angeles__CA/*http://weather.yahoo.com/forecast/USCA0638_c.html',
'location': {'city': u'Los Angeles', 'country': u'US', 'region': u'CA'},
'title': u'Yahoo! Weather - Los Angeles, CA',
'units': {'distance': u'km',
'pressure': u'mb',
'speed': u'km/h',
'temperature': u'C'},
'wind': {'chill': u'18', 'direction': u'0', 'speed': u'0'}}
As you can see in the results, you can get the weather icon in html_description
(http://l.yimg.com/a/i/us/we/52/33.gif) and the temp
. Since the results returned to you is everything, you will need to extract/access it like you would do with a python dictionary.
UPDATE
- Go to http://weather.yahoo.com/ and type in your zip code (or your city).
- If there is more than one choice, pick the one you want.
- Locate the link "extended forecast" under "6-10 day" column. Click it.
- Look at the URL address bar and the numbers there is your city's zip code.
ALL CITY CODE
Here's the function that helps you get all country, city codes
In [4]: pywapi.yield_all_country_city_codes_yahoo?
Type: function
String Form:<function yield_all_country_city_codes_yahoo at 0x10daebaa0>
File: /Users/calvin/.virtualenvs/myweather/lib/python2.7/site-packages/pywapi.py
Definition: pywapi.yield_all_country_city_codes_yahoo(country_code, cities)
Docstring:
Yield all cities codes for a specific country.
Parameters:
country_code: A four letter code of the necessary country. For example 'GMXX' or 'FRXX'.
cities: The number of cities to yield
Returns:
country_city_codes: A generator containing the city codes