2023年3月17日金曜日

PythonでWebスクレイピング

ご閲覧、ありがとうございます。

PythonでWebスクレイピングをします。

私が計画しているのは、
気象庁HPの過去の観測値を入手することです。

例として2023年01月01日の
東京の1時間ごとの観測値のスクレイピングをします。


https://www.data.jma.go.jp/obd/stats/etrn/view/hourly_s1.php?prec_no=44&block_no=47662&year=2023&month=1&day=1&view=

Pandasを使うとできるそうなので、
私の環境でインストールされているかを確認します。


ターミナルに『pip list』と入力します。


『pandas』はあります。

以下をJupyter Notebooksに入力します。


import pandas as pd


url = 'https://www.data.jma.go.jp/obd/stats/etrn/view/hourly_s1.php?prec_no=44&block_no=47662&year=2023&month=1&day=1&view='


df = pd.read_html(url)[0]
print(df)


df.to_csv('44132tokyo_hourly.csv')


CSVを見ると日本語が文字化けしています。

解消するにはCSV出力をする際に、
『encoding='utf-8-sig'』とすると良いとのことです。


df.to_csv('44132tokyo_hourly.csv', encoding='utf-8-sig')


問題なく日本語表記されました。

降水量が『--』や、
1列目に不要な情報が入っているなど、
気になるところはありますが、
とりあえず良しとします。

■追記■

以下で解決しました。


import pandas as pd


url = 'https://www.data.jma.go.jp/obd/stats/etrn/view/hourly_s1.php?prec_no=44&block_no=47662&year=2023&month=1&day=1&view='


df = pd.read_html(url, encoding='utf-8')[0]


df.replace('--', 0.0, inplace=True)



df.to_csv('44132tokyo_hourly.csv', encoding='utf-8-sig', index=False)

0 件のコメント:

コメントを投稿