天气信息+迭代器

从网址中抓取城市的天气信息,实现可迭代对象和迭代器对象,从而方便的进行一组城市的天气信息查询

 1 # encoding=utf-8
 2 import requests
 3 # *************************************************************************************
 4 # 实现从网站中抓取天气信息
 5 # def getWeather(city):
 6 #     r = requests.get(u'http://wthrcdn.etouch.cn/weather_mini?city=' + city)
 7 #     data = r.json()['data']['forecast'][0]
 8 #     return '%s:%s,%s' % (city,data['low'],data['high'])
 9 
10  # print getWeather(u'北京')
11  # print getWeather(u'沈阳')
12 # ***************************************************************************************
13 from collections import Iterable,Iterator
14 
15 class WeatherIterator(Iterator):
16     def __init__(self,cities):
17         self.cities = cities
18         self.index = 0
19     
20     def getWeather(self,city):
21         r = requests.get(u'http://wthrcdn.etouch.cn/weather_mini?city=' + city)
22         data = r.json()['data']['forecast'][0]
23         return '%s:%s,%s' % (city,data['low'],data['high'])
24     
25     def next(self):
26         if self.index == len(self.cities):
27             raise StopIteration
28         city = self.cities[self.index]
29         self.index += 1
30         return self.getWeather(city)
31         
32 class WeatherIterable(Iterable):
33     def __init__(self,cities):
34         self.cities = cities
35     
36     def __iter__(self):
37         return WeatherIterator(self.cities)
38         
39         
40         
41 for x in WeatherIterable([u'北京',u'上海',u'沈阳',u'郑州']):
42         print x

 

posted @ 2017-05-30 10:33  banshaohuan  阅读(233)  评论(0编辑  收藏  举报