Python ile Google Görsellerini Kazıyın ve İndirin

Yayınlanan: 2023-01-02

Web scraping kullanımının yaygınlaşması kullanım alanlarını oldukça artırmıştır. Günümüzde birçok AI uygulaması, web kazıma veri kümelerini güncel verilerle düzenli olarak besler. Hedef web sitelerinden yapay zeka uygulamalarının veri setlerine düzenli ve kesintisiz bir veri akışı vardır.

İlgili Yazı: Yapay Zekanın Müşteri Başarısının Geleceğine Etkisi

Görüntü işleme, yapay zeka uygulamalarının en popüler alanlarından biridir. Görüntü işleme, bilgisayarların görüntülerdeki ve videolardaki nesneleri ve insanları tanımlamasını ve anlamasını sağlamaya odaklanan bir bilgisayar bilimi alanıdır. Diğer yapay zeka türleri gibi, görüntü işleme de insan yeteneklerini kopyalayan görevleri gerçekleştirmeyi ve otomatikleştirmeyi amaçlar. Bu durumda görüntü işleme, insanların hem gördüklerini hem de gördüklerini anlamlandırma biçimlerini kopyalamaya çalışır.

Görüntü işleme projeleri başta olmak üzere birçok alanda algoritmaların geliştirilmesi ve hata paylarının azaltılması için gerekli olan veriler web scraping ile elde edilmektedir. Bu yazımızda görüntü işleme projelerinde sıklıkla kullanılan bir uygulama geliştireceğiz. Google Görseller'i Python programlama dili ile kazıyıp indireceğiz. Öyleyse başlayalım.

Proje Kurulumu

Öncelikle masaüstünde bir klasör açalım. Bu dosya yolunda bir terminal açalım ve aşağıdaki komutu çalıştırarak gerekli kütüphaneleri yükleyelim.

bs4 pip kurulum istekleri

Gerekli kütüphaneleri kurduktan sonra klasör içerisinde 'index.py' isimli bir dosya oluşturalım.

Ayrıca Okuyun: ChatGPT – İşletmeler İçin Etkileri

kod

Oluşturduğumuz 'index.py' dosyasına aşağıdaki kodları yapıştıralım.

içe aktarma istekleri, yeniden, json, urllib.request
BS4'ten BeautifulSoup'u içe aktarın

başlıklar = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, Gecko gibi) Chrome/103.0.5060.114 Safari/537.36"
}

queryParameters = {“q”: “marvel”, “tbm”: “isch”, “hl”: “en”, “gl”: “us”, “ijn”: “0” }

target_image_path = ".isv-r.PNCib.MSM1fd.BUooTd"
targetted_image_base_html_path = ".VFACy.kGQAp.sMi44c.lNHeqe.WGvvNb"

html = request.get(“https://www.google.com/search”, params=queryParameters, headers=headers, timeout=30)
çorba = GüzelSoup(html.text, “lxml”)

google_images = []

def scrape_and_download_google_images():

images_data_in_json = convert_image_to_json()

matched_image_data = re.findall(r'\”b-GRID_STATE0\”(.*)sideChannel:\s?{}}', images_data_in_json)

remove_matched_thumbnails = remove_matched_get_thumbnails(matched_google_image_data=matched_image_data)

eşleşen_çözünürlük_images = re.findall(r”(?:'|,),\[\”(https:|http.*?)\”,\d+,\d+\]”, remove_matched_thumbnails)

tam_çözünürlük_images = get_Definition_image(matched_Definition_images=matched_ Resolution_images)

dizin için, (image_data, image_link) in enumerate(zip(soup.select(target_image_path), full_ Resolution_images), start=1):

append_image_to_list(image_data=image_data, image_link=image_link)

print(f'{index}.resim indirilmeye başlandı')

download_image(image_link=resim_bağlantısı, dizin=dizin)

print(f'{index}.resim başarıyla indirildi')

print(f'kazınmış ve indirilmiş resimler: {google_images}')

def remove_matched_get_thumbnails(matched_google_image_data):
re.sub'u döndür(
r'\[\”(https\:\/\/encrypted-tbn0\.gstatic\.com\/images\?.*?)\”,\d+,\d+\]', “”, str(matched_google_image_data ))

def get_ Resolution_image(matched_ Resolution_images):
geri dönmek [
bytes(bytes(img, "ascii").decode("unicode-escape"), "ascii").decode("unicode-escape") for img in matched_ Resolution_images
]

def convert_image_to_json():
all_script_tags = çorba.select(“komut dosyası”)
images_data = “”.join(re.findall(r”AF_initDataCallback\(([^<]+)\);”, str(all_script_tags)))
sabit_images_data = json.dumps(images_data)
dönüş json.loads(fixed_images_data)

def append_image_to_list(image_data, image_link):
google_images.append({
“image_title”: image_data.select_one(targetted_image_base_html_path)[“başlık”],
“image_source_link”: image_data.select_one(targetted_image_base_html_path)[“href”],
"resim_bağlantısı": resim_bağlantısı
})

def download_image(resim_bağlantısı, dizin):
opener=urllib.request.build_opener()
opener.addheaders=[('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, Gecko gibi) Chrome/101.0.4951.54 Safari/537.36')]
urllib.request.install_opener(açıcı)
urllib.request.urlretrieve(image_link, f'Scraped_Images/Image_{index}.jpg')

scrape_and_download_google_images()

Kodları inceleyecek olursak öncelikle statik değerlere sahip alanlara bakalım. Aşağıdaki alanlar statik değerler olarak tanımlanır. Scraplamak ve indirmek istediğimiz görselin ismini ve özelliklerini queryParams değişkeni ile belirtiyoruz.

başlıklar = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, Gecko gibi) Chrome/103.0.5060.114 Safari/537.36"
}

queryParameters = {“q”: “marvel”, “tbm”: “isch”, “hl”: “en”, “gl”: “us”, “ijn”: “0” }

target_image_path = ".isv-r.PNCib.MSM1fd.BUooTd"
Targeted_image_base_html_path = ".VFACy.kGQAp.sMi44c.lNHeqe.WGvvNb"

html = request.get(“https://www.google.com/search”, params=queryParameters, headers=headers, timeout=30)
çorba = GüzelSoup(html.text, “lxml”)

google_images = []

scrape_and_download_google_images() yöntemi, akışın başladığı yerdir. hedeflenen görseller kazınır ve ardından belirttiğimiz klasöre indirilir.

def scrape_and_download_google_images():

images_data_in_json = convert_image_to_json()

matched_image_data = re.findall(r'\”b-GRID_STATE0\”(.*)sideChannel:\s?{}}', images_data_in_json)

remove_matched_thumbnails = remove_matched_get_thumbnails(matched_google_image_data=matched_image_data)

eşleşen_çözünürlük_images = re.findall(r”(?:'|,),\[\”(https:|http.*?)\”,\d+,\d+\]”, remove_matched_thumbnails)

tam_çözünürlük_images = get_Definition_image(matched_Definition_images=matched_ Resolution_images)

dizin için, (image_data, image_link) in enumerate(zip(soup.select(target_image_path), full_ Resolution_images), start=1):

append_image_to_list(image_data=image_data, image_link=image_link)

print(f'{index}.resim indirilmeye başlandı')

download_image(image_link=resim_bağlantısı, dizin=dizin)

print(f'{index}.resim başarıyla indirildi')

print(f'kazınmış ve indirilmiş resimler: {google_images}')

Kazınmış görüntünün klasöre indirilmesi, download_image(image_link=image_link, index=index) yöntemiyle yapılır. Bu yöntemde scraped edilen görsel, projenin dosya konumuna daha önce eklediğimiz “Scraped_Images” içerisine kaydedilir.

Not: Uygulamayı çalıştırmadan önce proje yapısında “Scraped_Images” klasörü oluşturun.

def download_image(resim_bağlantısı, dizin):
opener=urllib.request.build_opener()
opener.addheaders=[('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, Gecko gibi) Chrome/101.0.4951.54 Safari/537.36')]
urllib.request.install_opener(açıcı)
urllib.request.urlretrieve(image_link, f'Scraped_Images/Image_{index}.jpg')

Ayrıca Okuyun: İşletmeler İçin Hizmet Olarak Blockchain'in Uygulamaları ve Faydaları Nelerdir?

Koşmak

Uygulamayı çalıştırmak için dosya konumunda bir terminal açıp aşağıdaki komutu çalıştıralım.

piton index.py

Uygulama çalıştıktan sonra uygulamanın konsoluna aşağıdaki bilgiler yazdırılır.

1. resim indirilmeye başlandı
1. resim başarıyla indirildi
2. resim indirilmeye başlandı
2. resim başarıyla indirildi
3. resim indirilmeye başlandı
3. resim başarıyla indirildi
4. resim indirilmeye başlandı
4. resim başarıyla indirildi
5. resim indirilmeye başlandı
5. resim başarıyla indirildi
6. resim indirilmeye başlandı
6. resim başarıyla indirildi
7. resim indirilmeye başlandı
7. resim başarıyla indirildi
[…]
48. resim indirilmeye başlandı
48. resim başarıyla indirildi

kazınmış ve indirilmiş resimler:
[
{
'image_title': 'Marvel Çizgi Romanları – Wikipedia',
'image_source_link': 'https://en.wikipedia.org/wiki/Marvel_Comics',
'image_link': 'https://upload.wikimedia.org/wikipedia/commons/thumb/b/b9/Marvel_Logo.svg/1200px-Marvel_Logo.svg.png'
},
{
'image_title': 'Marvel Evreni – Vikipedi',
'image_source_link': 'https://en.wikipedia.org/wiki/Marvel_Universe',
'image_link': 'https://upload.wikimedia.org/wikipedia/en/1/19/Marvel_Universe_%28Civil_War%29.jpg'
},
{
'image_title': 'Marvel.com | Marvel Filmleri, Karakterleri, Çizgi Romanları, TV Resmi Sitesi',
'image_source_link': 'https://www.marvel.com/',
'image_link': 'https://i.annihil.us/u/prod/marvel/images/OpenGraph-TW-1200×630.jpg'
},
{
'image_title': 'Marvel Entertainment – ​​YouTube',
'image_source_link': 'https://www.youtube.com/c/marvel',
'image_link': 'https://yt3.ggpht.com/fGvQjp1vAT1R4bAKTFLaSbdsfdYFDwAzVjeRVQeikH22bvHWsGULZdwIkpZXktcXZc5gFJuA3w=s900-ck-c0x00ffffff-no-rj'
},
{
'image_title': 'Marvel filmleri ve şovları | Disney+',
'image_source_link': 'https://www.disneyplus.com/brand/marvel',
'image_link': 'https://prod-ripcut-delivery.disney-plus.net/v1/variant/disney/DA2E198288BFCA56AB53340211B38DE7134E40E4521EDCAFE6FFB8CD69250DE9/scale?width=2880&aspectRatio=1.78&format=jpeg'
},
{
'image_title': 'Yeni Başlayanlar İçin Marvel'a Giriş | KABLOLU',
'image_source_link': 'https://www.wired.com/2012/03/an-intro-to-marvel-for-newbies/',
'image_link': 'https://media.wired.com/photos/5955ceabcbd9b77a41915cf6/master/pass/marvel-characters.jpg'
},
{
'image_title': 'Her Marvel Filmi Hikaye Sırasına Göre Nasıl İzlenir – Geçit Töreni: Eğlence, Yemek Tarifleri, Sağlık, Yaşam, Tatiller',
'image_source_link': 'https://parade.com/1009863/alexandra-hurtado/marvel-movies-order/',
'image_link': 'https://parade.com/.image/t_share/MTkwNTgxMjkxNjk3NDQ4ODI4/marveldisney.jpg'
},
{
'image_title': 'Marvel Çizgi Romanları | Tarih, Karakterler, Gerçekler ve Filmler | Britannica',
'image_source_link': 'https://www.britannica.com/topic/Marvel-Comics',
'image_link': 'https://cdn.britannica.com/62/182362-050-BD31B42D/Scarlett-Johansson-Black-Widow-Chris-Hemsworth-Thor.jpg'
},
{
'image_title': 'Kaptan Marvel (2019) – IMDb',
'image_source_link': 'https://www.imdb.com/title/tt4154664/',
'image_link': 'https://m.media-amazon.com/images/M/MV5BMTE0YWFmOTMtYTU2ZS00ZTIxLWE3OTEtYTNiYzBkZjViZThiXkEyXkFqcGdeQXVyODMzMzQ4OTI@._V1_FMjpg_UX1000_.jpg'
},
[…]
]

İndirilen görüntüleri kontrol etmek için “Scraped_Images” dosyasına bakalım.

Scraped Images

Ayrıca Okuyun: Şirket Türleri ve Başlangıç ​​İşletmenizi Nasıl Dahil Edebilirsiniz?

Çözüm

Nedense ihtiyaç duyulan Google Görseller'in scraping ve download işlemlerini python ile yaptık. İhtiyacınız olan görselleri herhangi bir kod yazmadan Google'dan almak istiyorsanız Zenserp API'yi keşfedin. İşte sürekli güncellenen güçlü ve harika belgeleri.