1. ホーム
  2. python

[解決済み] URLから返送されたZipファイルをダウンロードする

2022-09-09 11:39:07

質問

ウェブブラウザで送信すると、zipファイルを保存するためのダイアログボックスをポップアップするURLがある場合、Pythonでこのzipファイルをキャッチしてダウンロードするにはどうすればよいでしょうか?

どのように解決するのですか?

多くの人は requests が利用可能であれば requests ドキュメント は、URLから生データをダウンロードし、保存するためにこれを推奨します。

import requests 

def download_url(url, save_path, chunk_size=128):
    r = requests.get(url, stream=True)
    with open(save_path, 'wb') as fd:
        for chunk in r.iter_content(chunk_size=chunk_size):
            fd.write(chunk)

回答はダウンロードについて尋ねているので と保存 について尋ねているので、zip ファイルを読むことについての詳細には踏み込んでいません。可能性については、以下の多くの回答のうちの 1 つを参照してください。

もし何らかの理由で requests を使用することができます。 urllib.request を代わりに使うことができます。上記ほど堅牢ではないかもしれません。

import urllib.request

def download_url(url, save_path):
    with urllib.request.urlopen(url) as dl_file:
        with open(save_path, 'wb') as out_file:
            out_file.write(dl_file.read())

最後に、まだPython 2を使っている場合は urllib2.urlopen .

from contextlib import closing

def download_url(url, save_path):
    with closing(urllib2.urlopen(url)) as dl_file:
        with open(save_path, 'wb') as out_file:
            out_file.write(dl_file.read())