天气信息+迭代器
从网址中抓取城市的天气信息,实现可迭代对象和迭代器对象,从而方便的进行一组城市的天气信息查询
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