Raschiare e scaricare Google Immagini con Python

Pubblicato: 2023-01-02

La crescente prevalenza del web scraping ha aumentato considerevolmente le sue aree di utilizzo. Molte applicazioni di intelligenza artificiale oggi alimentano regolarmente set di dati di web scraping con dati aggiornati. Esiste un flusso regolare e ininterrotto di dati dai siti Web target ai set di dati delle applicazioni di intelligenza artificiale.

Post correlato: L'impatto dell'intelligenza artificiale sul futuro del successo dei clienti

L'elaborazione delle immagini è una delle aree più popolari nelle applicazioni di intelligenza artificiale. L'elaborazione delle immagini è un campo dell'informatica che si concentra sull'abilitare i computer a identificare e comprendere oggetti e persone in immagini e video. Come altri tipi di intelligenza artificiale, l'elaborazione delle immagini mira a eseguire e automatizzare attività che replicano le capacità umane. In questo caso, l'elaborazione delle immagini cerca di copiare sia il modo in cui le persone vedono sia il modo in cui danno un senso a ciò che vedono.

I dati necessari per lo sviluppo di algoritmi e la riduzione dei margini di errore in molti campi, specialmente nei progetti di elaborazione delle immagini, sono ottenuti dal web scraping. In questo articolo svilupperemo un'applicazione che viene spesso utilizzata nei progetti di elaborazione delle immagini. Raschieremo e scaricheremo Google Immagini con il linguaggio di programmazione Python. Quindi iniziamo.

Installazione del progetto

Innanzitutto, apriamo una cartella sul desktop. Apriamo un terminale in questo percorso file e installiamo le librerie necessarie eseguendo il comando seguente.

pip installa richieste bs4

Dopo aver installato le librerie necessarie, creiamo un file chiamato 'index.py' nella cartella.

Codice

Incolliamo i seguenti codici nel file 'index.py' che abbiamo creato.

richieste di importazione, re, json, urllib.request
da bs4 import BeautifulSoupheaders = {
“User-Agent”: “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, come 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, timeout=30)
minestra = BeautifulSoup(html.text, “lxml”)

google_immagini = []

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)

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

full_resolution_images = get_resolution_image(matched_resolution_images=matched_resolution_images)

per index, (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}. l'immagine ha iniziato a scaricarsi')

download_image(image_link=image_link, index=indice)

print(f'{index}. immagine scaricata con successo')

print(f'immagini raschiate e scaricate: {google_images}')

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

def get_resolution_image(matched_resolution_images):
ritorno [
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 = soup.select(“script”)
images_data = “”.join(re.findall(r”AF_initDataCallback\(([^<]+)\);”, str(all_script_tags)))
fixed_images_data = json.dumps(images_data)
restituisce 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"],
"collegamento_immagine": collegamento_immagine
})

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

scrape_and_download_google_images()

Se esaminiamo i codici, diamo prima un'occhiata ai campi con valori statici. I seguenti campi sono definiti come valori statici. Specifichiamo il nome e le proprietà dell'immagine che vogliamo scrappare e scaricare con la variabile queryParams.

Leggi anche: Il ChatGPT – Le sue implicazioni per le aziende

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

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

google_immagini = []

Il metodo scrape_and_download_google_images() è dove inizia lo stream. le immagini mirate vengono raschiate e quindi scaricate nella cartella che abbiamo specificato.

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)

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

full_resolution_images = get_resolution_image(matched_resolution_images=matched_resolution_images)

per index, (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}. l'immagine ha iniziato a scaricarsi')

download_image(image_link=image_link, index=indice)

print(f'{index}. immagine scaricata con successo')

print(f'immagini raschiate e scaricate: {google_images}')

Il download dell'immagine raschiata nella cartella viene eseguito con il metodo download_image(image_link=image_link, index=index). L'immagine raschiata in questo metodo viene salvata in "Scraped_Images" che abbiamo precedentemente aggiunto alla posizione del file del progetto.

Nota: creare la cartella "Scraped_Images" nella struttura del progetto prima di eseguire l'applicazione

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

Leggi anche: Quali sono le applicazioni e i vantaggi di Blockchain-as-a-service per le aziende?

Correre

Per eseguire l'applicazione, apriamo un terminale nel percorso del file ed eseguiamo il seguente comando.

python index.py

Dopo l'esecuzione dell'applicazione, le seguenti informazioni vengono stampate sulla console dell'applicazione.

1. è iniziato il download dell'immagine
1. immagine scaricata con successo
2. è iniziato il download dell'immagine
2. immagine scaricata con successo
3. è iniziato il download dell'immagine
3. immagine scaricata con successo
4. è iniziato il download dell'immagine
4. immagine scaricata con successo
5. è iniziato il download dell'immagine
5. immagine scaricata con successo
6. è iniziato il download dell'immagine
6. immagine scaricata con successo
7. è iniziato il download dell'immagine
7. immagine scaricata con successo
[…]
48. è iniziato il download dell'immagine
48. immagine scaricata con successoimmagini scartate e scaricate:
[
{
'image_title': 'Fumetti Marvel – 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': 'Universo 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 | Il sito ufficiale per i film, i personaggi, i fumetti e la TV della Marvel,
'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 e programmi 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': 'Un'introduzione a Marvel per principianti | CABLATO',
'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': 'Come guardare ogni film Marvel in ordine di storia – Parata: intrattenimento, ricette, salute, vita, vacanze',
'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': 'Fumetti Marvel | Storia, personaggi, fatti e 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': 'Captain 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'
},
[…]
]

Diamo un'occhiata al file "Scraped_Images" per controllare le immagini scaricate.

Scraped Images

Leggi anche: Tipi di società e come incorporare la tua attività di avvio

Conclusione

Abbiamo eseguito lo scraping e il download di Google Immagini, che era necessario per qualche motivo, con Python. Se vuoi ottenere le immagini di cui hai bisogno da Google senza scrivere alcun codice, esplora l'API Zenserp. Ecco la sua potente e meravigliosa documentazione che viene costantemente aggiornata.