首頁 > 後端開發 > Python教學 > 如何使用Python的Requests庫有效率地下載圖片?

如何使用Python的Requests庫有效率地下載圖片?

Linda Hamilton
發布: 2025-01-02 22:12:41
原創
1009 人瀏覽過

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

使用請求下載映像

使用 Python 的 requests 模組從網路下載映像可能是一項簡單的任務。然而,當從 urllib2 切換到 requests 時,了解用於檢索影像資料的屬性的差異至關重要。

最初,使用 urllib2 的程式碼使用 img.read() 讀取影像,而所需的影像要求方法有 img = r.raw.read()。這是錯誤的,因為 r.raw 是一個文件對象,而不是實際的圖像資料。

要解決此問題,有兩種可行的解決方案:

  • 使用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的Requests庫有效率地下載圖片?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板