Kikis dan Unduh Gambar Google dengan Python

Diterbitkan: 2023-01-02

Meningkatnya prevalensi pengikisan web telah meningkatkan area penggunaannya secara signifikan. Banyak aplikasi AI saat ini memberi makan kumpulan data pengikisan web dengan data terbaru secara teratur. Ada aliran data yang teratur dan tidak terputus dari situs web target ke kumpulan data aplikasi kecerdasan buatan.

Pos Terkait: Dampak Kecerdasan Buatan terhadap Kesuksesan Pelanggan di Masa Depan

Pemrosesan gambar adalah salah satu area paling populer dalam aplikasi kecerdasan buatan. Pemrosesan gambar adalah bidang ilmu komputer yang berfokus pada memungkinkan komputer untuk mengidentifikasi dan memahami objek dan orang dalam gambar dan video. Seperti jenis kecerdasan buatan lainnya, pemrosesan gambar bertujuan untuk melakukan dan mengotomatiskan tugas yang mereplikasi kemampuan manusia. Dalam hal ini, pemrosesan gambar mencoba meniru cara orang melihat dan cara mereka memahami apa yang mereka lihat.

Data yang diperlukan untuk pengembangan algoritme dan pengurangan margin kesalahan di berbagai bidang, terutama dalam proyek pemrosesan gambar, diperoleh dengan web scraping. Pada artikel ini, kami akan mengembangkan aplikasi yang sering digunakan dalam proyek pemrosesan gambar. Kami akan mengikis dan mengunduh Gambar Google dengan bahasa pemrograman Python. Jadi mari kita mulai.

Pengaturan Proyek

Pertama, mari buka folder di desktop. Mari buka terminal di jalur file ini dan instal pustaka yang diperlukan dengan menjalankan perintah di bawah ini.

permintaan instalasi pip bs4

Setelah menginstal pustaka yang diperlukan, mari buat file bernama 'index.py' di folder tersebut.

Kode

Mari rekatkan kode berikut ke dalam file 'index.py' yang telah kita buat.

permintaan impor, re, json, urllib.request
from bs4 impor BeautifulSoupheaders = {
“User-Agent”: “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, seperti Gecko) 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, batas waktu=30)
sup = BeautifulSoup(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 = hapus_matched_get_thumbnails(matched_google_image_data=matched_image_data)

matched_resolution_images = re.findall(r”(?:'|,),\[\”(https:|http.*?)\”,\d+,\d+\]”, dihapus_matched_thumbnails)

gambar_resolusi_penuh = dapatkan_resolusi_gambar(gambar_sesuai_resolusi=gambar_sesuai_resolusi)

untuk indeks, (image_data, image_link) di enumerate(zip(soup.select(target_image_path), full_resolution_images), start=1):

tambahkan_gambar_ke daftar(data_gambar=data_gambar, tautan_gambar=tautan_gambar)

print(f'{index}.image mulai diunduh')

unduh_gambar(tautan_gambar=tautan_gambar, indeks=indeks)

print(f'{index}.image berhasil diunduh')

print(gambar yang diambil dan diunduh: {google_images}')

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

def dapatkan_resolusi_gambar(cocok_resolusi_gambar):
kembali [
bytes(bytes(img, “ascii”).decode(“unicode-escape”), “ascii”).decode(“unicode-escape”) untuk img di matched_resolution_images
]

def convert_image_to_json():
all_script_tags = soup.select(“script”)
images_data = “”.join(re.findall(r”AF_initDataCallback\(([^<]+)\);”, str(all_script_tags)))
fixed_images_data = json.dumps(images_data)
kembalikan 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)[“judul”],
"image_source_link": image_data.select_one(targetted_image_base_html_path)["href"],
“tautan_gambar”: tautan_gambar
})

def unduh_gambar(tautan_gambar, indeks):
pembuka=urllib.request.build_opener()
opener.addheaders=[('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, seperti Gecko) Chrome/101.0.4951.54 Safari/537.36′)]
urllib.request.install_opener(pembuka)
urllib.request.urlretrieve(image_link, f'Scraped_Images/Image_{index}.jpg')

scrape_and_download_google_images()

Jika kita memeriksa kodenya, pertama-tama mari kita lihat bidang dengan nilai statis. Bidang berikut didefinisikan sebagai nilai statis. Kami menentukan nama dan properti gambar yang ingin kami kikis dan unduh dengan variabel queryParams.

Baca Juga: ChatGPT – Implikasinya Bagi Bisnis

tajuk = {
“User-Agent”: “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, seperti Gecko) 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”
target_image_base_html_path = “.VFACy.kGQAp.sMi44c.lNHeqe.WGvvNb”

html = request.get(“https://www.google.com/search”, params=queryParameters, headers=headers, batas waktu=30)
sup = BeautifulSoup(html.text, “lxml”)

google_images = []

Metode scrape_and_download_google_images() adalah tempat streaming dimulai. gambar yang ditargetkan dikerok dan kemudian diunduh ke folder yang kami tentukan.

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 = hapus_matched_get_thumbnails(matched_google_image_data=matched_image_data)

matched_resolution_images = re.findall(r”(?:'|,),\[\”(https:|http.*?)\”,\d+,\d+\]”, dihapus_matched_thumbnails)

gambar_resolusi_penuh = dapatkan_resolusi_gambar(gambar_sesuai_resolusi=gambar_sesuai_resolusi)

untuk indeks, (image_data, image_link) di enumerate(zip(soup.select(target_image_path), full_resolution_images), start=1):

tambahkan_gambar_ke daftar(data_gambar=data_gambar, tautan_gambar=tautan_gambar)

print(f'{index}.image mulai diunduh')

unduh_gambar(tautan_gambar=tautan_gambar, indeks=indeks)

print(f'{index}.image berhasil diunduh')

print(gambar yang diambil dan diunduh: {google_images}')

Mengunduh gambar tergores ke folder dilakukan dengan metode download_image(image_link=image_link, index=index). Gambar yang tergores dalam metode ini disimpan di "Scraped_Images" yang sebelumnya kami tambahkan ke lokasi file proyek.

Catatan: Buat folder “Scraped_Images” di struktur proyek sebelum menjalankan aplikasi

def unduh_gambar(tautan_gambar, indeks):
pembuka=urllib.request.build_opener()
opener.addheaders=[('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, seperti Gecko) Chrome/101.0.4951.54 Safari/537.36′)]
urllib.request.install_opener(pembuka)
urllib.request.urlretrieve(image_link, f'Scraped_Images/Image_{index}.jpg')

Baca Juga: Apa Saja Aplikasi Dan Manfaat Blockchain-as-a-service Untuk Bisnis?

Berlari

Untuk menjalankan aplikasi, mari buka terminal di lokasi file dan jalankan perintah berikut.

indeks python.py

Setelah aplikasi berjalan, informasi berikut dicetak di konsol aplikasi.

1. gambar mulai diunduh
1. gambar berhasil diunduh
2. gambar mulai diunduh
2. gambar berhasil diunduh
3. gambar mulai diunduh
3. gambar berhasil diunduh
4. gambar mulai diunduh
4. gambar berhasil diunduh
5. gambar mulai diunduh
5. gambar berhasil diunduh
6. gambar mulai diunduh
6. gambar berhasil diunduh
7. gambar mulai diunduh
7. gambar berhasil diunduh
[…]
48. gambar mulai diunduh
48. gambar yang berhasil diunduh diambil dan gambar yang diunduh:
[
{
'image_title': 'Marvel Comics – 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 Universe – Wikipedia',
'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 | Situs Resmi untuk Film Marvel, Karakter, Komik, TV',
'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': 'Film dan acara Marvel | 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': 'Pengantar Marvel untuk Pemula | KABEL',
'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': 'Cara Menonton Setiap Film Marvel dalam Urutan Cerita – Parade: Hiburan, Resep, Kesehatan, Kehidupan, Liburan',
'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': 'Komik Marvel | Sejarah, Karakter, Fakta, & Film | 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': 'Kapten 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'
},
[…]
]

Mari kita lihat file "Scraped_Images" untuk memeriksa gambar yang diunduh.

Scraped Images

Baca Juga: Jenis Korporasi Dan Cara Menggabungkan Bisnis Startup Anda

Kesimpulan

Kami melakukan pengikisan dan pengunduhan Gambar Google, yang diperlukan untuk beberapa alasan, dengan python. Jika Anda ingin mendapatkan gambar yang Anda butuhkan dari Google tanpa menulis kode apa pun, jelajahi Zenserp API. Inilah dokumentasinya yang kuat dan luar biasa yang terus diperbarui.