我正在尝试让天气 API 正常工作。但是我怎样才能得到 C° 和天气图标?没有其他的?
问问题
3670 次
2 回答
2
使用 pip安装pywapi后,打开 ipython shell 并探索pywapi
可以做什么。这是一个实际上为您提供所需内容的示例:-
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'}}
正如您在结果中看到的,您可以在html_description
( http://l.yimg.com/a/i/us/we/52/33.gif ) 和temp
. 由于返回给您的结果就是一切,您需要像使用 python 字典一样提取/访问它。
更新
- 转到http://weather.yahoo.com/并输入您的邮政编码(或您的城市)。
- 如果有多个选择,请选择您想要的一个。
- 在“6-10 天”栏下找到“扩展预测”链接。点击它。
- 查看 URL 地址栏,那里的数字是您所在城市的邮政编码。
所有城市代码
这是帮助您获取所有国家、城市代码的功能
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
于 2013-04-21T05:42:09.493 回答
2
您可以使用 Metwit天气 API。
如果您可以在客户端实现它们:每天 200 个请求(基于 ip 的限制)不需要身份验证。覆盖全球,符合 JSON 和 REST 标准。您可以免费注册额外的 API 调用,如果您仍然需要在服务器端调用它们,基本计划非常便宜。
这里有一个 jQuery 中的小例子:http: //jsbin.com/isukam/1使用我们的天气资源。
完全披露:我拥有这个可爱的 API。
于 2013-04-21T20:56:26.020 回答