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で開くと次のように表示されます。