Răzuiți și descărcați imagini Google cu Python

Publicat: 2023-01-02

Prevalența tot mai mare a web scraping a crescut considerabil zonele sale de utilizare. Multe aplicații AI alimentează în mod regulat seturi de date web scraping cu date actualizate. Există un flux regulat și neîntrerupt de date de la site-urile web țintă la seturile de date ale aplicațiilor de inteligență artificială.

Postare conexă: Impactul inteligenței artificiale asupra viitorului succesului clienților

Procesarea imaginilor este una dintre cele mai populare domenii în aplicațiile de inteligență artificială. Procesarea imaginilor este un domeniu al informaticii care se concentrează pe a permite computerelor să identifice și să înțeleagă obiecte și oameni în imagini și videoclipuri. Ca și alte tipuri de inteligență artificială, procesarea imaginilor își propune să realizeze și să automatizeze sarcini care reproduc capacitățile umane. În acest caz, procesarea imaginilor încearcă să copieze atât modul în care oamenii văd, cât și modul în care dau sens la ceea ce văd.

Datele necesare pentru dezvoltarea algoritmilor și reducerea marjelor de eroare în multe domenii, în special în proiectele de procesare a imaginilor, sunt obținute prin web scraping. În acest articol, vom dezvolta o aplicație care este folosită frecvent în proiectele de procesare a imaginilor. Vom răzui și descărca Google Images cu limbajul de programare Python. Asadar, haideti sa începem.

Configurarea proiectului

Mai întâi, să deschidem un folder pe desktop. Să deschidem un terminal în această cale de fișier și să instalăm bibliotecile necesare executând comanda de mai jos.

solicitări de instalare pip bs4

După instalarea bibliotecilor necesare, să creăm un fișier numit „index.py” în folder.

Cod

Să lipim următoarele coduri în fișierul „index.py” creat de noi.

cereri de import, re, json, urllib.request
din bs4 import BeautifulSoupheaders = {
„User-Agent”: „Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, ca Gecko) Chrome/103.0.5060.114 Safari/537.36”
}queryParameters = {“q”: „minună”, „tbm”: „isch”, „hl”: „en”, „gl”: „noi”, „ijn”: „0” }

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

html = requests.get(“https://www.google.com/search”, params=queryParameters, headers=headers, timeout=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)

removed_matched_thumbnails = remove_matched_get_thumbnails(matched_google_image_data=matched_image_data)

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

full_resolution_images = get_resolution_image(matched_resolution_images=matched_resolution_images)

pentru index, (image_data, image_link) în 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}. imaginea a început să se descarce')

download_image(image_link=image_link, index=index)

print(f'{index}. imaginea a fost descărcată cu succes')

print(f'scraped and downloaded images: {google_images}')

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

def get_resolution_image(matched_resolution_images):
întoarcere [
bytes(bytes(img, „ascii”).decode(“unicode-escape”), „ascii”).decode(„unicode-escape”) pentru img în matched_resolution_images
]

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

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

scrape_and_download_google_images()

Dacă examinăm codurile, să ne uităm mai întâi la câmpurile cu valori statice. Următoarele câmpuri sunt definite ca valori statice. Specificăm numele și proprietățile imaginii pe care dorim să o răzuim și să o descarcăm cu variabila queryParams.

Citește și: ChatGPT – Implicațiile sale pentru afaceri

antete = {
„User-Agent”: „Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, ca Gecko) Chrome/103.0.5060.114 Safari/537.36”
}queryParameters = {“q”: „mervel”, „tbm”: „isch”, „hl”: „en”, „gl”: „noi”, „ijn”: „0” }target_image_path = „.isv- r.PNCib.MSM1fd.BUooTd”
targeted_image_base_html_path = „.VFACy.kGQAp.sMi44c.lNHeqe.WGvvNb”

html = requests.get(“https://www.google.com/search”, params=queryParameters, headers=headers, timeout=30)
supă = BeautifulSoup(html.text, „lxml”)

google_images = []

Metoda scrape_and_download_google_images() este locul unde începe fluxul. imaginile vizate sunt răzuite și apoi descărcate în folderul pe care l-am specificat.

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)

removed_matched_thumbnails = remove_matched_get_thumbnails(matched_google_image_data=matched_image_data)

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

full_resolution_images = get_resolution_image(matched_resolution_images=matched_resolution_images)

pentru index, (image_data, image_link) în 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}. imaginea a început să se descarce')

download_image(image_link=image_link, index=index)

print(f'{index}. imaginea a fost descărcată cu succes')

print(f'scraped and downloaded images: {google_images}')

Descărcarea imaginii răzuite în folder se face în metoda download_image(image_link=image_link, index=index). Imaginea răzuită în această metodă este salvată în „Scraped_Images” pe care l-am adăugat anterior la locația fișierului proiectului.

Notă: Creați folderul „Scraped_Images” în structura proiectului înainte de a rula aplicația

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

Citește și: Care sunt aplicațiile și beneficiile Blockchain-as-a-service pentru companii?

Alerga

Pentru a rula aplicația, să deschidem un terminal în locația fișierului și să rulăm următoarea comandă.

python index.py

După rularea aplicației, următoarele informații sunt tipărite pe consola aplicației.

1. imaginea a început să se descarce
1. imaginea a fost descărcată cu succes
2. imaginea a început să se descarce
2. imaginea a fost descărcată cu succes
3. imaginea a început să se descarce
3. imaginea a fost descărcată cu succes
4. imaginea a început să se descarce
4. imaginea a fost descărcată cu succes
5. imaginea a început să se descarce
5. imaginea descărcată cu succes
6. imaginea a început să se descarce
6. imaginea a fost descărcată cu succes
7. imaginea a început să se descarce
7. imaginea descărcată cu succes
[…]
48. imaginea a început să se descarce
48. imagine descărcată cu succes imagini răzuite și descărcate:
[
{
'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': 'Universul Marvel – 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 | Site-ul oficial pentru filme Marvel, personaje, benzi desenate, 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”,
„link_imagine”: „https://yt3.ggpht.com/fGvQjp1vAT1R4bAKTFLaSbdsfdYFDwAzVjeRVQeikH22bvHWsGULZdwIkpZXktcXZc5gFJuA3w=s900-ck-c0x00ff'ff-c0x00ff
},
{
'image_title': 'Filme și emisiuni 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=aspectRatio801&width=aspectRatio'
},
{
'image_title': 'O introducere în Marvel pentru începători | CABLAT',
„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”: „Cum să vizionați fiecare film Marvel în ordinea poveștii – Paradă: divertisment, rețete, sănătate, viață, vacanțe”,
„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 Comics | Istorie, personaje, fapte și filme | Britannica',
„image_source_link”: „https://www.britannica.com/topic/Marvel-Comics”,
„link_imagine”: „https://cdn.britannica.com/62/182362-050-BD31B42D/Scarlett-Johansson-Black-Widow-Chris-Hemsworth-Thor.jpg”
},
{
„image_title”: „Captain Marvel (2019) – IMDb”,
„image_source_link”: „https://www.imdb.com/title/tt4154664/”,
„link_imagine”: „https://m.media-amazon.com/images/M/MV5BMTE0YWFmOTMtYTU2ZS00ZTIxLWE3OTEtYTNiYzBkZjViZThiXkEyXkFqcGdeQXVyODMzMzQ4OTI@._V1_FM_jpg
},
[…]
]

Să ne uităm la fișierul „Scraped_Images” pentru a verifica imaginile descărcate.

Scraped Images

Citiți și: Tipuri de corporații și cum să vă încorporați afacerea de pornire

Concluzie

Am făcut răzuirea și descărcarea imaginilor Google, care a fost nevoie dintr-un motiv oarecare, cu python. Dacă doriți să obțineți imaginile de care aveți nevoie de la Google fără a scrie niciun cod, explorați API-ul Zenserp. Iată documentația sa puternică și minunată, care este actualizată constant.