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
Lepaskan: 2024-12-11 18:06:17
asal
687 orang telah melayarinya

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())
Salin selepas log masuk

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)
Salin selepas log masuk

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)        
Salin selepas log masuk
  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)
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan