2016/05/23更新

[Python] お天気情報をAPI経由で取得する

このエントリーをはてなブックマークに追加            

こんにちは、@yoheiMuneです。
今日はお天気情報について、幾つかAPIで取得できる方法があるのですが、その中でライブドアのAPIが比較的使いやすかったので、その使い方をブログに残したいと思います。

画像

目次




お天気情報を取得する(ライブドア天気情報)

タイトルではAPI経由でと書きましたが、正確にはRSSを読み取ってお天気情報を取得します。以下のライブドア天気情報は、地域ごとに異なるRSSでお天気情報を取得することができます。

http://weather.livedoor.com/weather_hacks/rss_feed_list

ここでは、東京の天気を取得できる以下のRSSを取得して、お天気情報を抜き出してみたいと思います。

http://weather.livedoor.com/forecast/rss/area/130010.xml
<!--RSS例-->
<rss xmlns:ldWeather="http://weather.livedoor.com/ns/rss/2.0" version="2.0">
    <!--途中省略-->
    <!--お天気の1日分の情報-->
    <item>
        <title>[ 22日(日)の天気 ] 東京 - 晴れ - 最高気温28℃ - 5月22日(日)</title>
        <link>http://weather.livedoor.com/area/forecast/130010?r=rss20160522</link>
        <category>天気予報</category>
        <day>Sunday</day>
        <image>
            <title/>
            <link>http://weather.livedoor.com/area/forecast/130010?r=rss20160522</link>
            <url>http://weather.livedoor.com/img/icon/1.gif</url>
            <width>50</width>
            <height>31</height>
        </image>
        <description>22日(日)の天気は晴れ、最高気温は28℃ でしょう。</description>
        <pubDate>Sun, 22 May 2016 17:00:00 +0900</pubDate>
    </item>
    <!--以下、itemが続く-->
</rss>
上記のRSSから、item < titleよりお天気情報を得ることができます。具体的には以下のようにコードを書くことで取得できます。
# Python
import urllib.request
from bs4 import BeautifulSoup

rssurl = "http://weather.livedoor.com/forecast/rss/area/130010.xml"

tenki = []
with urllib.request.urlopen(rssurl) as res:
    xml = res.read()
    soup = BeautifulSoup(xml, "html.parser")
    for item in soup.find_all("item"):
        title = item.find("title").string
        if title.find("[ PR ]") == -1:
            tenki.append(title)
print(tenki)
# [ 22日(日)の天気 ] 東京 - 晴れ - 最高気温28℃ - 5月22日(日)
# [ 23日(月)の天気 ] 東京 - 晴れ - 最高気温30℃ - 5月23日(月)
# [ 24日(火)の天気 ] 東京 - 曇時々晴 - 最高気温27℃ - 5月24日(火)
# 以下省略
このようにお天気情報を取得することができます。



最後に

今回はお天気情報をプログラムで自動的に取得する方法をブログに書きました。お天気情報は有料のものも多い中、こんな感じでライトに取得できる情報源もあります。いろいろと調べて使い分けしていきたいところです。

最後になりますが本ブログでは、Python・Swift・Java・フロントエンド・機械学習など雑多に情報発信をしていきます。自分の第2の脳にすべく、情報をブログに貯めています。気になった方は、本ブログのRSSTwitterをフォローして頂けると幸いです ^ ^。

最後までご覧頂きましてありがとうございました!





こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。