Python görüntü kazıyıcı sadece programlama becerilerinizi geliştirmek için bir araç değildir. Ayrıca, bir makine öğrenimi projesi için görüntü kaynağı oluşturmak veya site küçük resimleri oluşturmak için de kullanabilirsiniz. Benzer şeyleri yapmanın başka yolları olsa da, kendi oluşturduğunuz araçları kullanarak sahip olduğunuz kontrolü hiçbir şey yenemez.

Python ve BeautifulSoup kitaplığını kullanarak herhangi bir web sitesinden görüntüleri nasıl kazıyacağınızı öğrenin.

Görüntü Kazıma Yasal mı?

Beğenmek daha genelleştirilmiş web kazıma, görüntü kazıma, web sitesi içeriğini indirmek için bir yöntemdir. Yasa dışı değil, ancak uymanız gereken bazı kurallar ve en iyi uygulamalar var. İlk olarak, açıkça istemediğini belirttiği bir web sitesini kazımaktan kaçınmalısınız. Bunu arayarak bulabilirsin /robots.txt hedef sitedeki dosya.

Çoğu web sitesi, arama motorlarının içeriklerini dizine eklemesini istedikleri için web taramasına izin verir. Görüntüleri herkese açık olduğu için bu tür web sitelerini kazıyabilirsiniz.

instagram viewer

Ancak, bir görseli indirebilmeniz, onu kendi görselinizmiş gibi kullanabileceğiniz anlamına gelmez. Çoğu web sitesi, görsellerini yeniden yayınlamanızı veya başka şekillerde yeniden kullanmanızı önlemek için lisans verir. Belirli bir muafiyet olmadıkça görüntüleri yeniden kullanamayacağınızı her zaman varsayın.

Python Paket Kurulumu

Başlamadan önce birkaç paket yüklemeniz gerekecek. Bilgisayarınızda Python yüklü değilse, resmi web sitesini ziyaret edin. piton.org En son sürümü indirmek ve yüklemek için web sitesi.

Ardından, terminalinizi proje klasörünüze açın ve Python sanal ortamını etkinleştir bağımlılıklarınızı izole etmek için.

Son olarak, yükleyin istekler ve GüzelÇorba pip kullanan paketler:

pip kurulum bs4 istekleri

Python ile Görüntü Kazıma

Bu görüntü kazıma öğreticisi için, istekler hedef görüntüleri içeren bir web sayfasını getirmek için kitaplık. Daha sonra o web sitesinden gelen yanıtı şu adrese ileteceksiniz: GüzelÇorba tüm resim bağlantı adreslerini almak için resim etiketler. Ardından, görüntüleri indirmek için her görüntü dosyasını bir klasöre yazacaksınız.

Python'un BeautifulSoup ile Resim URL'leri Nasıl Getirilir

Şimdi devam edin ve proje kök klasörünüzde bir Python dosyası oluşturun. eklediğinizden emin olun. .py dosya adının uzantısı.

Bu öğreticideki her kod parçacığı bir öncekinden devam eder.

Python dosyasını şununla açın: herhangi bir iyi kod düzenleyici ve bir web sayfası istemek için aşağıdaki kodu kullanın:

içe aktarmak istekler
URL = "imagesiteURL" # Bunu web sitesinin URL'si ile değiştirin
getURL = request.get (URL, üstbilgiler={"User-Agent":"Mozilla/5.0"})
yazdır (getURL.status_code)

Yukarıdaki program 200 yanıt kodu verirse, istek başarılı olmuştur. Aksi takdirde, ağ bağlantınızın kararlı olduğundan emin olmak isteyebilirsiniz. Ayrıca, geçerli bir URL sağladığınızdan emin olun.

şimdi kullan GüzelÇorba yardımıyla web sayfasının içeriğini okumak için html_parser:

itibaren bs4 içe aktarmak GüzelÇorba

çorba = BeautifulSoup (getURL.text, 'html.parser')

resimler = çorba.find_all('img')
yazdır (görüntüler)

Bu kod, her biri web sayfasından bir görüntüyü temsil eden nesnelerin bir listesini oluşturur. Ancak, bu verilerden ihtiyacınız olan şey, her görüntünün metnidir. kaynak bağlanmak.

Her birinden kaynağı çıkarmak için resim etiket:

imageSources = []

için resim içinde Görüntüler:
imageSources.append (image.get('src'))

yazdır (imageSources)

Kodunuzu yeniden çalıştırın ve resim adresleri artık yeni bir listede görünmelidir (resimKaynaklar). Hedef web sayfasından her görüntü kaynağını başarıyla çıkardınız.

Python ile Görüntüler Nasıl Kaydedilir

İlk olarak, proje kök dizininizde bir indirme hedef klasörü oluşturun ve adını verin. Görüntüler.

Python'un görüntüleri başarılı bir şekilde indirmesi için, yollarının tam mutlak URL'ler olması gerekir. Başka bir deyişle, " http://" veya " https://" önek, artı web sitesinin tam etki alanı. Web sayfası resimlerine göreli URL'ler kullanarak başvuruyorsa, bunları mutlak URL'lere dönüştürmeniz gerekir.

Kolay durumda, URL mutlak olduğunda, indirmeyi başlatmak, daha önce çıkarılan kaynaklardan her bir görüntüyü istemekten başka bir şey değildir:

için resim içinde resimKaynakları:
ağlar = request.get (resim)
open('images/' + image.split('/')[-1], 'wb').write (webs.content)

bu image.split('/')[-1] anahtar kelime, görüntü bağlantısını her eğik çizgide (/) böler. Ardından, son öğeden görüntü dosyası adını (herhangi bir uzantı dahil) alır.

Nadir durumlarda, görüntü dosya adlarının çakışabileceğini ve bunun sonucunda indirme üzerine yazma işleminin gerçekleşebileceğini unutmayın. Bu örneğin bir uzantısı olarak bu sorunun çözümlerini keşfetmekten çekinmeyin.

Mutlak URL'ler, ele alınması gereken çok sayıda uç durumla birlikte oldukça karmaşık hale gelebilir. Neyse ki, içinde yararlı bir yöntem var request.compat denilen paket urljoin. Bu yöntem, bir temel URL ve göreli olabilecek bir URL verilen tam bir URL döndürür. İçinde bulacağınız değerleri çözmenizi sağlar. href ve kaynak Öznitellikler.

Son kod şöyle görünür:

itibaren bs4 içe aktarmak GüzelÇorba
URL = "imagesiteURL" # Bunu web sitesinin URL'si ile değiştirin
getURL = request.get (URL, üstbilgiler={"User-Agent":"Mozilla/5.0"})
çorba = BeautifulSoup (getURL.text, 'html.parser')

resimler = çorba.find_all('img')
çözülmüşURL'ler = []

için resim içinde Görüntüler:
kaynak = image.get('src')
çözülmüşURLs.append (requests.compat.urljoin (URL, kaynak))

için resim içinde çözümlenmişURL'ler:
ağlar = request.get (resim)
open('images/' + image.split('/')[-1], 'wb').write (webs.content)

Asla Görüntü Verilerini Eksik Etmeyin

Birçok görüntü tanıma projesi, bir modeli eğitmek için yetersiz görüntü nedeniyle bir tuğla duvara çarptı. Ancak, veri havuzunuzu artırmak için her zaman web sitelerinden görüntüleri sıyırabilirsiniz. Neyse ki Python, fiyat kaybetme korkusu olmadan sürekli olarak kullanabileceğiniz güçlü bir görüntü kazıyıcıdır.

Web'den diğer veri türlerini almakla ilgileniyorsanız, genel web kazıma için Python'un nasıl kullanılacağını öğrenmek isteyebilirsiniz.