見出し画像

Pythonで一括ダウンロード

WebサイトからExcelなどをダウンロードするときに、数が多いと「1つずつクリックして、保存場所を指定して」という作業が面倒な時があります。そんな仕事はPythonにやってもらいましょう。

厚生労働省のNDBオープンデータから精神疾患にかかっている保険点数のファイルを年度ごとにダウンロードします。

まずは試しに2014年のファイルをダウンロードします。
今回は、requestsというライブラリを用いました。

import requests
from pathlib import Path

# ダウンロードするExcelファイルのURL
excel_url = 'https://www.mhlw.go.jp/file/06-Seisakujouhou-12400000-Hokenkyoku/0000139447.xlsx'

# ファイルの保存先パス
save_path = r'C:XXXXXXXXXX\2014_精神.xlsx'

# ダウンロード
response = requests.get(excel_url)

# レスポンスが成功した場合
if response.status_code == 200:
    # ファイルを保存
    with open(save_path, 'wb') as f:
        f.write(response.content)
    print(f'Excelファイルをダウンロードしました: {save_path}')
else:
    print(f'エラー: {response.status_code}')

requestsには以下のメソッドがあります。
get :サーバーから情報を取得
post :サーバーへ情報を登録
put :サーバーの情報を更新
delete :サーバーの情報を削除

今回は情報を取るだけなので、getを使っています。この戻り値は以下のようになります。
200:成功
400番台:失敗(リクエスト側に原因)
500番台:失敗(サーバー側に原因)

200番台の場合、つまり情報の取得に成功したら、content(バイナリデータ)を書き込み可能なバイナリファイルで開き('wb')、指定したファイル名(2014_精神.xlsx)にその内容を書き込んでいます。

これをユーザ定義関数にして複数のファイルを読み込みます。

import requests
from pathlib import Path

def exdl(inpath, outpath):
    # ダウンロードするExcelファイルのURL
    excel_url = inpath

    # ファイルの保存先パス
    save_path = outpath

    # ダウンロード
    response = requests.get(excel_url)

    # レスポンスが成功した場合
    if response.status_code == 200:
        # ファイルを保存
        with open(save_path, 'wb') as f:
            f.write(response.content)
        print(f'Excelファイルをダウンロードしました: {save_path}')
    else:
        print(f'エラー: {response.status_code}')
        
exdl("https://www.mhlw.go.jp/file/06-Seisakujouhou-12400000-Hokenkyoku/0000177257.xlsx"
     ,r"C:XXXXXXXXXXXXX\2014_精神.xlsx")
exdl("https://www.mhlw.go.jp/content/12400000/000347722.xlsx"
     ,r"C:XXXXXXXXXXXXX\2015_精神.xlsx")
exdl("https://www.mhlw.go.jp/content/12400000/000711851.xlsx"
     ,r"C:XXXXXXXXXXXXX\2016_精神.xlsx")
exdl("https://www.mhlw.go.jp/content/12400000/000539710.xlsx"
     ,r"C:XXXXXXXXXXXXX\2017_精神.xlsx")
exdl("https://www.mhlw.go.jp/content/12400000/000821470.xlsx"
     ,r"C:XXXXXXXXXXXXX\2018_精神.xlsx")
exdl("https://www.mhlw.go.jp/content/12400000/000986921.xlsx"
     ,r"C:XXXXXXXXXXXXX\2019_精神.xlsx")
exdl("https://www.mhlw.go.jp/content/12400000/001122117.xlsx"
     ,r"C:XXXXXXXXXXXXX\2020_精神.xlsx")
exdl("https://www.mhlw.go.jp/file/06-Seisakujouhou-12400000-Hokenkyoku/0000139447.xlsx"
     ,r"C:XXXXXXXXXXXXX\2021_精神.xlsx")
Excelファイルをダウンロードしました: C:\XXXXX\2014_精神.xlsx
Excelファイルをダウンロードしました: C:\XXXXX\2015_精神.xlsx
Excelファイルをダウンロードしました: C:\XXXXX\2016_精神.xlsx
Excelファイルをダウンロードしました: C:\XXXXX\2017_精神.xlsx
Excelファイルをダウンロードしました: C:\XXXXX\2018_精神.xlsx
Excelファイルをダウンロードしました: C:\XXXXX\2019_精神.xlsx
Excelファイルをダウンロードしました: C:\XXXXX\2020_精神.xlsx
Excelファイルをダウンロードしました: C:\XXXXX\2021_精神.xlsx

Webサイトからファイルをダウンロードして、それを所定の場所に移し、ファイル名を変更するというマニュアル操作が省けました。

この記事が気に入ったらサポートをしてみませんか?