2012年9月5日

pyquery を利用して気象庁のWebサイトから過去の気象データを取得する

概要

pyqueryを利用してスクレイピングをする。
気象庁のWebサイトから過去の気象データを取ってみる。

注意点

スクレイピングは相手サーバに負荷をかけないように注意すること。この記事を参考にして、問題が発生しても一切責任は取らない。自己責任でどうぞ。

pyquery について

jQuery 風にHTML/XML が操作できるのが特徴。パーサーに lxml を利用するのでパース速度も高速で、lxml に可能なことは、大体可能。
この分野だと、beautifulsoupも有名。pyqueryとどちらを利用するかは好みの問題。

pyquery のインストール

pip でインストールできる。lxml に依存している。

pip install pyquery

サンプルソース

2012年8月の東京の平均気温を取得するサンプル。
以下のサンプルはまったく汎用的にしてないが、jQueryを知っていればかなり簡単。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from pyquery import PyQuery as pq


def main():
    # 気象庁 東京 2012年8月データ
    url = ('http://www.data.jma.go.jp/obd/stats/etrn/view/daily_s1.php?'
           'prec_no=44&block_no=47662&year=2012&month=8&day=&view=')
    #  pyquery
    query = pq(url, parser='html')
    # title の取得
    title = query('title').text()
    # 日毎を取得
    day = query('.data_0_0')

    print title
    for i, item in enumerate(day):
        if i % 20 == 5:
            print('{:02d}日の平均気温 {} ℃'
                  .format(i / 20 + 1, pq(item).text()))

if __name__ == '__main__':
    main()
blog comments powered by Disqus