Memuat turun Imej dengan Permintaan
Memuat turun imej daripada web menggunakan modul permintaan Python boleh menjadi tugas yang mudah. Walau bagaimanapun, apabila beralih daripada urllib2 kepada permintaan, adalah penting untuk memahami perbezaan dalam atribut yang digunakan untuk mendapatkan semula data imej.
Pada mulanya, kod menggunakan urllib2 membaca imej menggunakan img.read(), manakala yang dikehendaki pendekatan dengan permintaan mempunyai img = r.raw.read(). Ini adalah salah kerana r.raw ialah objek fail, bukan data imej sebenar.
Untuk menyelesaikannya, terdapat dua penyelesaian yang berdaya maju:
Menggunakan Objek Fail Response.raw:
Tetapkan decode_content kepada True untuk memaksa penyahmampatan termampat maklum balas. Ini membolehkan anda menstrim data ke objek fail menggunakan 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)
Lelaran Atas Respons:
Kaedah ini memastikan penyahmampatan data.
r = requests.get(url, stream=True) if r.status_code == 200: with open(path, 'wb') as f: for chunk in r: f.write(chunk)
Sebagai alternatif, anda boleh menentukan saiz bongkah tersuai menggunakan 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)
Ingat untuk membuka fail destinasi dalam mod binari ('wb') untuk mengelakkan baris baharu daripada diterjemahkan. Selain itu, tetapkan strim=True untuk menghalang keseluruhan imej daripada dimuat turun ke dalam memori.
Atas ialah kandungan terperinci Bagaimana untuk memuat turun imej dengan cekap menggunakan perpustakaan permintaan Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!