天氣信息+叠代器
阿新 • • 發佈:2017-05-30
lec ini ati pri json top .get bsp dex
從網址中抓取城市的天氣信息,實現可叠代對象和叠代器對象,從而方便的進行一組城市的天氣信息查詢
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,Iterator14 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
天氣信息+叠代器