Python天気予報
via.http://neta.ywcafe.net/000534.html
というわけで、livedoor 天気情報を利用して、Pythonで天気予報表示スクリプト。
問題は、地域コードを全国の地点定義表(XML)で先に知っておかないと使えない。これは対策が幾つか思いつくので好きな方法を選択すれば良い。
実行例
$ python livedoorweather.py Select City(NUM): 83 Select Day(1:today, 2:tomorrow, 3:dayaftertomorrow): 1 兵庫県 豊岡 - 今日の天気 曇のち雨 (但馬北部の海上では、11日朝のうちにかけて高波に注意して下さい。 また、兵庫県南部では空気が乾燥しているため、火の取り扱いに注意して下さい。兵庫県北部、...) Temperature Max: 8 Min: 0 $ python livedoorweather.py Select City(NUM): 83 Select Day(1:today, 2:tomorrow, 3:dayaftertomorrow): 2 兵庫県 豊岡 - 明日の天気 雪 (但馬北部の海上では、11日朝のうちにかけて高波に注意して下さい。 また、兵庫県南部では空気が乾燥しているため、火の取り扱いに注意して下さい。兵庫県北部、...) Temperature Max: None Min: None $ python livedoorweather.py Select City(NUM): 83 Select Day(1:today, 2:tomorrow, 3:dayaftertomorrow): 3 兵庫県 豊岡 - あさっての天気 曇のち晴 (但馬北部の海上では、11日朝のうちにかけて高波に注意して下さい。 また、兵庫県南部では空気が乾燥しているため、火の取り扱いに注意して下さい。兵庫県北部、...) Temperature Max: 12 Min: 1
import sys, urllib, xml.dom.minidom sel_city = int(raw_input('Select City(NUM): ')) sel_day = int(raw_input('Select Day(1:today, 2:tomorrow, 3:dayaftertomorrow): ')) if sel_day == 1: sel_day = 'today' elif sel_day == 2: sel_day = 'tomorrow' elif sel_day == 3: sel_day = 'dayaftertomorrow' params = urllib.urlencode({'city': sel_city, 'day': sel_day}) f = urllib.urlopen("http://weather.livedoor.com/forecast/webservice/rest/v1", params) wea_xml = xml.dom.minidom.parseString(f.read()) title = wea_xml.getElementsByTagName('title').item(0).firstChild.data telop = wea_xml.getElementsByTagName('telop').item(0).firstChild.data desc = wea_xml.getElementsByTagName('description').item(0).firstChild.data print "\n%s\t%s\n(%s)" % (title, telop, desc) tempe_elm = wea_xml.getElementsByTagName('temperature').item(0) max_elm = tempe_elm.getElementsByTagName('max').item(0) max_tempe = max_elm.getElementsByTagName('celsius').item(0).firstChild if max_tempe != None: max_tempe = max_tempe.data min_elm = tempe_elm.getElementsByTagName('min').item(0) min_tempe = min_elm.getElementsByTagName('celsius').item(0).firstChild if min_tempe != None: min_tempe = min_tempe.data print "Temperature Max: %s\tMin: %s" % (max_tempe, min_tempe)
楽しくなってきた。