


Cara Mengautomasikan Muat Turun Imej dengan Python: Panduan Komprehensif
Dalam era digital hari ini, mengurus dan memproses imej secara pemrograman boleh menjimatkan banyak masa dan usaha anda. Jika anda ingin mengautomasikan proses memuat turun imej daripada web, anda telah datang ke tempat yang betul. Dalam artikel ini, kita akan menyelami skrip Python yang melakukan perkara itu menggunakan API Pexels — sumber popular foto stok berkualiti tinggi.
Ikhtisar
Skrip Python yang disediakan di sini membolehkan anda mencari imej pada Pexels berdasarkan pertanyaan, memuat turunnya jika ia memenuhi kriteria tertentu dan menyimpannya ke sistem setempat anda. Skrip menggunakan beberapa perpustakaan dan API yang berkuasa, termasuk permintaan, Bantal dan API Pexels.
Ciri Utama Skrip
Penyepaduan API: Ambil imej daripada Pexels menggunakan API mereka.
Penapisan Dinamik: Pilih imej berdasarkan dimensi dan orientasinya.
Simulasi Tarikh: Walaupun API Pexels tidak menyokong penapisan berasaskan tarikh secara langsung, skrip mensimulasikan ini dengan menjana tarikh rawak.
Pengehadan Kadar: Elakkan daripada mencapai had kadar API dengan kelewatan rawak.
Memahami Kod
Import dan Konfigurasi
import os import requests from PIL import Image from io import BytesIO import random import time from datetime import datetime, timedelta
Skrip bermula dengan mengimport perpustakaan penting. Berikut ialah ringkasan ringkas:
- os dan permintaan digunakan untuk berinteraksi dengan sistem fail dan membuat permintaan HTTP, masing-masing.
- PIL (Bantal) adalah untuk mengendalikan operasi imej.
- rawak, masa dan masa tarikh digunakan untuk menjana nombor rawak, mengurus kelewatan dan bekerja dengan tarikh.
API_KEY = '...' # Replace with your actual Pexels API key BASE_URL = 'https://api.pexels.com/v1/search' OUTPUT_DIR = 'output' SEARCH_QUERY = 'Subaru Forester' MIN_WIDTH = 1080 MIN_HEIGHT = 1920 NUM_IMAGES = 16 ORIENTATION = 'vertical'
Sediakan kunci API anda, URL asas untuk Pexels dan tentukan parameter lain seperti pertanyaan carian, dimensi imej minimum, bilangan imej untuk dimuat turun dan orientasi imej.
Memastikan Direktori Output Wujud
if not os.path.exists(OUTPUT_DIR): os.makedirs(OUTPUT_DIR)
Skrip menyemak sama ada direktori output wujud dan menciptanya jika perlu.
Mengambil Imej
def get_images(query, page=1, per_page=15): params = { 'query': query, 'page': page, 'per_page': per_page } response = requests.get(BASE_URL, headers=headers, params=params) response.raise_for_status() return response.json()
Fungsi ini menghantar permintaan kepada API Pexels untuk mengambil imej berdasarkan pertanyaan carian dan parameter lain.
Memuat Turun dan Menyimpan Imej
def download_and_save_image(url, filename): response = requests.get(url) response.raise_for_status() img = Image.open(BytesIO(response.content)) if img.width >= MIN_WIDTH and img.height >= MIN_HEIGHT: if ORIENTATION == 'vertical' and (img.height / img.width > 1.4): img.save(filename) print(f'Saved {filename}') return 1 elif ORIENTATION == 'horizontal' and (img.width / img.height > 1.4): img.save(filename) print(f'Saved {filename}') return 1 return 0
Fungsi ini mengendalikan muat turun imej daripada URL, menyemak dimensi dan orientasinya serta menyimpannya jika ia memenuhi kriteria.
Menjana Tarikh Rawak
def generate_random_date(): end_date = datetime.now() start_date = end_date - timedelta(days=4*365) random_date = start_date + timedelta(days=random.randint(0, 4*365)) return random_date
Fungsi ini menjana tarikh rawak dalam tempoh empat tahun yang lalu. Walaupun API Pexels tidak menyediakan penapisan berasaskan tarikh secara langsung, tarikh rawak ini mensimulasikan penapis sedemikian.
Fungsi Utama
def main(): images_downloaded = 0 page = 1 seen_images = set() target_date = generate_random_date() print(f"Target date for filtering: {target_date.strftime('%Y-%m-%d')}") while images_downloaded < NUM_IMAGES: data = get_images(SEARCH_QUERY, page) photos = data.get('photos', []) if not photos: print('No more photos found.') break random.shuffle(photos) # Shuffle to get a more random selection for photo in photos: if images_downloaded >= NUM_IMAGES: break image_url = photo['src']['original'] photo_date = datetime.strptime(photo['created_at'], '%Y-%m-%dT%H:%M:%S%z') if 'created_at' in photo else datetime.now() if photo_date > target_date and image_url not in seen_images: filename = os.path.join(OUTPUT_DIR, f'image_{images_downloaded + 1}.jpg') if download_and_save_image(image_url, filename): images_downloaded += 1 seen_images.add(image_url) page += 1 time.sleep(random.uniform(1, 2)) # Sleep to avoid hitting API rate limits
Fungsi utama() menyelaraskan proses pengambilan, muat turun dan penyimpanan imej. Ia mengurus penomboran, menyemak imej pendua dan menguatkuasakan kelewatan untuk menghormati had kadar API.
Menjalankan Skrip
Untuk menjalankan skrip ini, pastikan anda telah menggantikan API_KEY dengan kunci API Pexels sebenar anda dan melaraskan parameter lain mengikut keperluan. Simpan skrip dalam fail .py dan laksanakannya menggunakan penterjemah Python. Imej yang memenuhi kriteria yang ditetapkan akan disimpan dalam direktori output.
Kesimpulan
Mengautomasikan muat turun imej boleh memperkemas aliran kerja anda dan memastikan anda mempunyai imej berkualiti tinggi yang boleh anda gunakan. Skrip Python ini menyediakan asas yang kukuh untuk tugasan sedemikian, dengan fleksibiliti untuk penyesuaian berdasarkan keperluan anda. Sama ada anda sedang mengusahakan projek peribadi atau menyepadukan muat turun imej ke dalam aplikasi yang lebih besar, skrip ini menunjukkan kuasa dan serba boleh Python dalam mengendalikan tugas berasaskan web.
Atas ialah kandungan terperinci Cara Mengautomasikan Muat Turun Imej dengan Python: Panduan Komprehensif. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Artikel ini telah memilih beberapa laman web projek "selesai" Python dan portal sumber pembelajaran "blockbuster" peringkat tinggi untuk anda. Sama ada anda sedang mencari inspirasi pembangunan, mengamati dan belajar kod sumber peringkat induk, atau secara sistematik meningkatkan keupayaan praktikal anda, platform ini tidak boleh dilepaskan dan dapat membantu anda berkembang menjadi tuan python dengan cepat.

Untuk memulakan pembelajaran mesin kuantum (QML), alat pilihan adalah Python, dan perpustakaan seperti Pennylane, Qiskit, Tensorflowquantum atau Pytorchquantum perlu dipasang; Kemudian membiasakan diri dengan proses dengan menjalankan contoh, seperti menggunakan Pennylane untuk membina rangkaian saraf kuantum; kemudian melaksanakan model mengikut langkah -langkah penyediaan set data, pengekodan data, membina litar kuantum parametrik, latihan pengoptimuman klasik, dan lain -lain; Dalam pertempuran sebenar, anda harus mengelakkan mengejar model kompleks dari awal, memberi perhatian kepada batasan perkakasan, mengamalkan struktur model hibrid, dan terus merujuk kepada dokumen terkini dan dokumen rasmi untuk menindaklanjuti pembangunan.

Gunakan subprocess.run () untuk melaksanakan perintah shell dengan selamat dan menangkap output. Adalah disyorkan untuk lulus parameter dalam senarai untuk mengelakkan risiko suntikan; 2. Apabila ciri -ciri shell diperlukan, anda boleh menetapkan shell = benar, tetapi berhati -hati dengan suntikan arahan; 3. Gunakan subprocess.popen untuk merealisasikan pemprosesan output masa nyata; 4. Tetapkan semak = benar untuk membuang pengecualian apabila arahan gagal; 5. Anda boleh secara langsung memanggil rantai untuk mendapatkan output dalam senario mudah; Anda harus memberi keutamaan kepada subprocess.run () dalam kehidupan seharian untuk mengelakkan menggunakan os.system () atau modul yang tidak ditetapkan. Kaedah di atas mengatasi penggunaan teras untuk melaksanakan perintah shell di Python.

Gunakan sendi Seaborn untuk dengan cepat menggambarkan hubungan dan pengedaran antara dua pembolehubah; 2. 3. Tambah garis regresi dan maklumat ketumpatan kepada jenis = "reg", dan gabungkan marginal_kws untuk menetapkan gaya plot tepi; 4. Apabila jumlah data besar, disarankan untuk menggunakan "hex"

Untuk menguasai crawler web python, anda perlu memahami tiga langkah teras: 1. Gunakan permintaan untuk memulakan permintaan, dapatkan kandungan laman web melalui mendapatkan kaedah, perhatikan untuk menetapkan tajuk, pengendalian pengecualian, dan mematuhi robots.txt; 2. Gunakan BeautifulSoup atau XPath untuk mengekstrak data. Yang pertama sesuai untuk parsing mudah, sementara yang terakhir lebih fleksibel dan sesuai untuk struktur kompleks; 3. Gunakan selenium untuk mensimulasikan operasi penyemak imbas untuk kandungan pemuatan dinamik. Walaupun kelajuannya perlahan, ia dapat mengatasi halaman yang kompleks. Anda juga boleh cuba mencari antara muka API laman web untuk meningkatkan kecekapan.

Senarai rentetan boleh digabungkan dengan kaedah Join (), seperti '' .join (kata) untuk mendapatkan "HelloWorldFrompython"; 2. Senarai nombor mesti ditukar kepada rentetan dengan peta (str, nombor) atau [str (x) forxinnumbers] sebelum menyertai; 3. Mana -mana senarai jenis boleh ditukar secara langsung kepada rentetan dengan kurungan dan petikan, sesuai untuk debugging; 4. Format tersuai boleh dilaksanakan oleh ekspresi penjana yang digabungkan dengan gabungan (), seperti '|' .join (f "[{item}]" foriteminitems) output "[a] | [a]

Pasang PYODBC: Gunakan perintah PipinstallPyoDBC untuk memasang perpustakaan; 2. Sambungkan SQLServer: Gunakan rentetan sambungan yang mengandungi pemacu, pelayan, pangkalan data, uid/pwd atau aman 3. Semak pemacu yang dipasang: Jalankan pyodbc.drivers () dan tapis nama pemacu yang mengandungi 'SQLServer' untuk memastikan nama pemacu yang betul digunakan seperti 'ODBCDriver17 untuk SQLServer'; 4. Parameter utama rentetan sambungan

Gunakan httpx.asyncclient untuk memulakan permintaan HTTP asynchronous dengan cekap. 1. Asas mendapatkan permintaan menguruskan pelanggan melalui asyncwith dan gunakan AwaitClient.get untuk memulakan permintaan yang tidak menyekat; 2. Menggabungkan Asyncio.Gather untuk menggabungkan dengan asyncio.Gather dapat meningkatkan prestasi dengan ketara, dan jumlah masa adalah sama dengan permintaan yang paling lambat; 3. Menyokong pengepala adat, pengesahan, tetapan base_url dan masa tamat; 4. Boleh menghantar permintaan pos dan membawa data JSON; 5. Beri perhatian untuk mengelakkan pencampuran kod asynchronous segerak. Sokongan proksi perlu memberi perhatian kepada keserasian back-end, yang sesuai untuk crawler atau agregasi API dan senario lain.
