Pythonで天気を取得してくる
朝起きた時に,今日の天気をRaspberry Piに読み上げてほしいので,↓のサイトから引っ張ってくる。
http://tenki.jp/forecast/pref-31.html
流れとしてはソケット通信でhtmlを取得してきて,idから文章を引っ張ってきて正規表現でタグ消し を行う。後はこちらの方法でRaspberry Piにインストールした,AquesTalkPiを使うと,ゆっくりに読ませることができる。
参考ページ
正規表現を実際にプログラミングで利用するのは初めてだったのですが,結構便利で驚き。これからも利用していきたい。
天気とは関係ないですが,Pythonのプログラムを書いている時に,↓の記事も参考になりました
コードは↓
#coding: UTF-8 import urllib2 import re import socket def tenki(): url = "http://tenki.jp/forecast/pref-31.html" socket.setdefaulttimeout(10.0) # 正規表現のパターンを定義 - タグ消し remove_tag = re.compile(r'<.*?>') try: htmldata = urllib2.urlopen(url) except urllib2.HTTPError as err: print('HTTPError') print(err) except urllib2.URLError as err: print('URLError') print(err) if isinstance(err.reason, socket.timeout): print('timeout') else: print('Get HTML') content = htmldata.read() htmldata.close() content_list = content.split('\n') flag = False for line in content_list: if flag==True and not "</div>" in line: #正規表現でタグ消しした後にstripメソッドでスペースを除去。後ろに,をつけると改行しない print remove_tag.sub("", line).strip(), #print line #filewrite(line) if flag==True and "</div>" in line: print remove_tag.sub("", line).strip(), #print line #filewrite(line) flag = False elif "weatherCountryDescriptionBody" in line: print remove_tag.sub("", line).strip(), #print line #filewrite(line) flag = True if __name__ == "__main__": tenki()
Raspberry Pi ラズベリー・パイ 超小型パソコン MODEL B (PLUS) &専用ケ-ス model B+ Case(Clear)
- 出版社/メーカー: Raspberry Pi
- メディア: エレクトロニクス
- この商品を含むブログを見る