Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk memuat turun imej dengan betul menggunakan modul `permintaan` Python?

Bagaimana untuk memuat turun imej dengan betul menggunakan modul `permintaan` Python?

Susan Sarandon
Susan Sarandonasal
2024-12-11 18:06:17689semak imbas

How to Properly Download Images Using Python's `requests` Module?

Memuat turun Imej dengan Modul permintaan Python

Apabila cuba memuat turun imej daripada internet menggunakan modul permintaan Python, anda mungkin menghadapi masalah dengan kod berbanding menggunakan urlopen urllib2 kaedah. Artikel ini menangani cabaran ini dan menyediakan penyelesaian.

Kod Asal untuk Rujukan

img = urllib2.urlopen(settings.STATICMAP_URL.format(**data))
with open(path, 'w') as f:
    f.write(img.read())

Kod Rujukan Baharu

r = requests.get(settings.STATICMAP_URL.format(**data))
if r.status_code == 200:
    img = r.raw.read()
    with open(path, 'w') as f:
        f.write(img)

Masalah

Isu timbul apabila menggunakan permintaan kerana atribut daripada respons yang mengandungi data imej adalah berbeza daripada urlopen in urllib2.

Penyelesaian

Untuk mendapatkan semula data imej daripada respons permintaan, terdapat dua pilihan:

  1. Menggunakan objek fail response.raw: Kaedah ini memerlukan menetapkan decode_content kepada True dan kemudian menstrim data ke fail objek:
r = requests.get(settings.STATICMAP_URL.format(**data), stream=True)
if r.status_code == 200:
    with open(path, 'wb') as f:
        r.raw.decode_content = True
        shutil.copyfileobj(r.raw, f)        
  1. Lelaran atas respons: Kaedah ini memastikan permintaan menyahkod data semasa lelaran:
r = requests.get(settings.STATICMAP_URL.format(**data), stream=True)
if r.status_code == 200:
    with open(path, 'wb') as f:
        for chunk in r:
            f.write(chunk)

Dengan menetapkan strim=True dalam panggilan permintaan, ia menghalang muat turun keseluruhan imej ke dalam memori sekaligus. Fail hendaklah dibuka dalam mod binari untuk mengelakkan ralat.

Atas ialah kandungan terperinci Bagaimana untuk memuat turun imej dengan betul menggunakan modul `permintaan` Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn