Pythonのデータ解析ライブラリ「Pandas」を使って、気象庁の気象情報をスクレイピングしてCSVファイルに保存します。
データ解析ライブラリ「Pandas」のインストール
pip3を使って次のようにライブラリをインストールします。
pip3 install beautifulsoup4 lxml html5lib
スクレイピングソフトの作成
スクレイピングソフト「TestPandas.py」を作成します。Pandasの詳細については「pandas documentation」を参照します。
- 4行目のread_htmlメソッドで指定したURLからデータを取得します。
- 7行目で最初のテーブルのテーブルの頭から5行を表示します。
- 10行目のto_csvメソッドで、shift-jisによりCSVファイルを作成します。
TestPandas.py
import pandas as pd url = 'https://www.data.jma.go.jp/obd/stats/etrn/view/daily_s1.php?prec_no=46&block_no=47670&year=2021&month=09&day=1&view=p1' data = pd.read_html(url) print(data[0][['日', '気圧(hPa)', '降水量(mm)', '気温(℃)', '湿度(%)', '風向・風速(m/s)', '日照時間(h)', '雪(cm)', '天気概況']].head()) print(data[0][['日', '気圧(hPa)', '降水量(mm)', '気温(℃)', '湿度(%)', '風向・風速(m/s)']].head()) print(data[0].head()) print(data[0].tail()) data[0].to_csv("weather.csv", encoding="shift-jis")
スクレイピングソフトの実行
スクレイピングソフト「TestPandas.py」を実行すると次のように表示されます。
>TestPandas.py 日 気圧(hPa) 降水量(mm) ... 雪(cm) 天気概況 日 現地 海面 降水量(mm) ... 雪(cm) 天気概況 日 平均 平均 合計 ... 降雪 最深積雪 昼(06:00-18:00) 夜(18:00-翌日06:00) 日 平均 平均 合計 ... 合計 値 昼(06:00-18:00) 夜(18:00-翌日06:00) 0 1 1007.5 1012.4 2.0 ... -- -- 雨時々曇 雨時々曇 1 2 1004.2 1009.2 19.5 ... -- -- 雨 雨 2 3 1006.1 1011.1 10.0 ... -- -- 雨後時々曇 曇時々雨 3 4 1008.9 1013.9 20.5 ... -- -- 雨時々曇 雨 4 5 1011.7 1016.7 6.0 ... -- -- 雨後曇一時晴 曇後一時雨 [5 rows x 21 columns] 日 気圧(hPa) 降水量(mm) ... 湿度(%) 風向・風速(m/s) 日 現地 海面 降水量(mm) ... 湿度(%) 風向・風速(m/s) 日 平均 平均 合計 最大 ... 最小 平均風速 最大風速 最大瞬間風速 ・・・
作成したCSVファイルをExcelで開くと次のように表示されます。