ホームページ > バックエンド開発 > Python チュートリアル > Python のリクエスト ライブラリを使用して画像を効率的にダウンロードするにはどうすればよいですか?

Python のリクエスト ライブラリを使用して画像を効率的にダウンロードするにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-02 22:12:41
オリジナル
1010 人が閲覧しました

How to Efficiently Download Images Using Python's Requests Library?

リクエストによる画像のダウンロード

Python のリクエスト モジュールを使用して Web から画像をダウンロードするのは簡単な作業です。ただし、urllib2 からリクエストに切り替える場合、画像データの取得に使用される属性の違いを理解することが重要です。

最初、urllib2 を使用するコードは img.read() を使用して画像を読み取りますが、目的のリクエストを使用したアプローチには img = r.raw.read() があります。 r.raw は実際の画像データではなくファイル オブジェクトであるため、これは誤りです。

これを解決するには、2 つの実行可能な解決策があります。

  • 使用Response.raw ファイル オブジェクト:

    強制的に解凍するには、decode_content を True に設定します。圧縮された応答の。これにより、shutil.copyfileobj() を使用してデータをファイル オブジェクトにストリーミングできます。

    import requests
    import shutil
    
    r = requests.get(url, stream=True)
    if r.status_code == 200:
        with open(path, 'wb') as f:
            r.raw.decode_content = True
            shutil.copyfileobj(r.raw, f)        
    ログイン後にコピー
  • 応答の反復:

    この方法により、データが確実に解凍されます。

    r = requests.get(url, stream=True)
    if r.status_code == 200:
        with open(path, 'wb') as f:
            for chunk in r:
                f.write(chunk)
    ログイン後にコピー

    または、 Response.iter_content() を使用してカスタム チャンク サイズを指定できます。

    r = requests.get(url, stream=True)
    if r.status_code == 200:
        with open(path, 'wb') as f:
            for chunk in r.iter_content(1024):
                f.write(chunk)
    ログイン後にコピー

改行が変換されないように、宛先ファイルをバイナリ モード ('wb') で開くことを忘れないでください。さらに、イメージ全体がメモリにダウンロードされないようにするには、stream=True を設定します。

以上がPython のリクエスト ライブラリを使用して画像を効率的にダウンロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート