Python toplu resim indirme

merhabalar, internette baya araştırdım ama bulamadım. Pythonda bir kaynaktaki belli sayıda resmi nasıl toplu olarak indirebiliriz? hazır modülü var mıdır yoksa nasıl yazabilirim? örneğin google görsellerdeki arama linkindeki görselleri indirmek için nasıl bir kod yazılabilir

Merhaba,

google’daki resimleri küçük boyutta çekebilirsiniz.

import requests

from bs4 import BeautifulSoup

url = "https://www.google.com/search?q=yazbel&tbm=isch"
r = requests.get(url)
soup = BeautifulSoup(r.content, "html.parser")

for i, j in enumerate(soup.find_all("img")):
    try:
        data = requests.get(j.get("src"), stream=True)
        if b"PNG" in data.content:
            filename = f"img{i}.png"
        elif b"JFIF" in data.content:
            filename = f"img{i}.jpg"
        else:
            filename = f"img{i}"
        with open(filename, "wb") as f:
            for chunk in data.iter_content(chunk_size=4096):
                f.write(chunk)
    except ValueError as err:
        pass

Beutiful soup kullanarak yapabilirsin. Dosyayı indirme işlemi ve diğerlerini internette araştırabilirsin.

Bu kod sayfadaki bütün resimleri indirmez mi, Google logosu ve ikonlar dahil?

Toplamda 20 tane resim indirdi ve bunların arasında google’un logosu ve ikonlar yok. Bu arada kodları değiştirdim, kimi dosyalar png kimi dosyalar jpg uzantılı.

1 Beğeni

İyi geceler o zaman :wink:

Teşekkür ederim, size de iyi geceler.

Burdaki chunku_size ve stream parametreleri ne işe yarıyor acaba ?

stream, boyutu yüksek olan dosyaları çekmemize yarar. stream parametresini True yaparsanız, requests tüm veriyi çekene kadar serbest kalmayacaktır.

chunk_size da yığın boyutu demek. Yani data.iter_content'in boyutu 10000 byte olsun, her bir chunk (yığın), chunk_size'a yazdığımız byte değeri uzunluğunda veri içerecektir. Biz chunk_size'a 1000 yazarsak, bu 10000 bytelık dosya verisi için for döngüsü 10 kez başa döner.

chunk_size belirtmedeki amaçlardan birisi, hafıza kullanımını ayarlamaktır. Veriyi parçalara bölerek, her bir parçanın hafızayı daha az tüketmesini sağlarız.