0

我正在尝试让天气 API 正常工作。但是我怎样才能得到 C° 和天气图标?没有其他的?

4

2 回答 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 字典一样提取/访问它。

更新

  1. 转到http://weather.yahoo.com/并输入您的邮政编码(或您的城市)。
  2. 如果有多个选择,请选择您想要的一个。
  3. 在“6-10 天”栏下找到“扩展预测”链接。点击它。
  4. 查看 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 回答