Grattez et téléchargez Google Images avec Python

Publié: 2023-01-02

La prévalence croissante du web scraping a considérablement augmenté ses domaines d'utilisation. Aujourd'hui, de nombreuses applications d'IA alimentent régulièrement des ensembles de données de grattage Web avec des données à jour. Il existe un flux de données régulier et ininterrompu des sites Web cibles vers les ensembles de données des applications d'intelligence artificielle.

Article connexe : L'impact de l'intelligence artificielle sur l'avenir de la réussite des clients

Le traitement d'images est l'un des domaines les plus populaires dans les applications d'intelligence artificielle. Le traitement d'images est un domaine de l'informatique qui vise à permettre aux ordinateurs d'identifier et de comprendre des objets et des personnes dans des images et des vidéos. Comme d'autres types d'intelligence artificielle, le traitement d'images vise à effectuer et à automatiser des tâches qui reproduisent les capacités humaines. Dans ce cas, le traitement d'image essaie de copier à la fois la façon dont les gens voient et la façon dont ils donnent un sens à ce qu'ils voient.

Les données nécessaires au développement d'algorithmes et à la réduction des marges d'erreur dans de nombreux domaines, notamment dans les projets de traitement d'images, sont obtenues par web scraping. Dans cet article, nous allons développer une application fréquemment utilisée dans les projets de traitement d'images. Nous allons gratter et télécharger Google Images avec le langage de programmation Python. Alors, commençons.

Configuration du projet

Tout d'abord, ouvrons un dossier sur le bureau. Ouvrons un terminal dans ce chemin de fichier et installons les bibliothèques nécessaires en exécutant la commande ci-dessous.

pip demande d'installation bs4

Après avoir installé les bibliothèques nécessaires, créons un fichier nommé 'index.py' dans le dossier.

Code

Collons les codes suivants dans le fichier 'index.py' que nous avons créé.

demandes d'importation, re, json, urllib.request
de bs4 importer BeautifulSoupheaders = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, comme 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 = demandes.get("https://www.google.com/search", params=queryParameters, headers=headers, timeout=30)
soupe = 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 = remove_matched_get_thumbnails(matched_google_image_data=matched_image_data)

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

full_resolution_images = get_resolution_image(matched_resolution_images=matched_resolution_images)

pour index, (image_data, image_link) dans 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}. le téléchargement de l'image a commencé')

download_image(image_link=image_link, index=index)

print(f'{index}. image téléchargée avec succès')

print(f'images récupérées et téléchargées : {google_images}')

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

def get_resolution_image(matched_resolution_images):
retour [
bytes(bytes(img, "ascii").decode("unicode-escape"), "ascii").decode("unicode-escape") pour img dans matched_resolution_images
]

def convert_image_to_json() :
all_script_tags = soupe.select("script")
images_data = "".join(re.findall(r"AF_initDataCallback\(([^<]+)\);", ​​str(all_script_tags)))
données_images_fixes = json.dumps(données_images)
retourner 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"],
"lien_image": lien_image
})

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, comme Gecko) Chrome/101.0.4951.54 Safari/537.36′)]
urllib.request.install_opener(opener)
urllib.request.urlretrieve(image_link, f'Scraped_Images/Image_{index}.jpg')

scrape_and_download_google_images()

Si nous examinons les codes, regardons d'abord les champs avec des valeurs statiques. Les champs suivants sont définis comme des valeurs statiques. Nous spécifions le nom et les propriétés de l'image que nous voulons gratter et télécharger avec la variable queryParams.

Lisez aussi : Le ChatGPT – Ses implications pour les entreprises

en-têtes = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, comme 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 = demandes.get("https://www.google.com/search", params=queryParameters, headers=headers, timeout=30)
soupe = BeautifulSoup(html.text, "lxml")

google_images = []

La méthode scrape_and_download_google_images() est l'endroit où le flux commence. les images ciblées sont récupérées puis téléchargées dans le dossier que nous avons spécifié.

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+\]”, remove_matched_thumbnails)

full_resolution_images = get_resolution_image(matched_resolution_images=matched_resolution_images)

pour index, (image_data, image_link) dans 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}. le téléchargement de l'image a commencé')

download_image(image_link=image_link, index=index)

print(f'{index}. image téléchargée avec succès')

print(f'images récupérées et téléchargées : {google_images}')

Le téléchargement de l'image grattée dans le dossier s'effectue dans la méthode download_image(image_link=image_link, index=index). L'image grattée dans cette méthode est enregistrée dans les "Scraped_Images" que nous avons précédemment ajoutées à l'emplacement du fichier du projet.

Remarque : Créez le dossier "Scraped_Images" dans la structure du projet avant d'exécuter l'application.

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, comme Gecko) Chrome/101.0.4951.54 Safari/537.36′)]
urllib.request.install_opener(opener)
urllib.request.urlretrieve(image_link, f'Scraped_Images/Image_{index}.jpg')

Lisez aussi : Quelles sont les applications et les avantages de Blockchain-as-a-service pour les entreprises ?

Courir

Pour exécuter l'application, ouvrons un terminal à l'emplacement du fichier et exécutons la commande suivante.

python index.py

Une fois l'application exécutée, les informations suivantes sont imprimées sur la console de l'application.

1. l'image a commencé à se télécharger
1. image téléchargée avec succès
2. l'image a commencé à se télécharger
2. image téléchargée avec succès
3. l'image a commencé à se télécharger
3. image téléchargée avec succès
4. l'image a commencé à se télécharger
4. image téléchargée avec succès
5. l'image a commencé à se télécharger
5. image téléchargée avec succès
6. l'image a commencé à se télécharger
6. image téléchargée avec succès
7. l'image a commencé à se télécharger
7. image téléchargée avec succès
[…]
48. l'image a commencé à se télécharger
48. image téléchargée avec succès images grattées et téléchargées :
[
{
'image_title': 'Marvel Comics – Wikipédia',
'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': 'Univers Marvel – Wikipédia',
'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 | Le site officiel des films, des personnages, des bandes dessinées et de la télévision 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 Divertissement – ​​YouTube',
'image_source_link' : 'https://www.youtube.com/c/marvel',
'image_link' : 'https://yt3.ggpht.com/fGvQjp1vAT1R4bAKTFLaSbdsfdYFDwAzVjeRVQeikH22bvHWsGULZdwIkpZXktcXZc5gFJuA3w=s900-ck-c0x00ffffff-no-rj'
},
{
'image_title': 'Films et séries 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' : 'Une introduction à Marvel pour les débutants | FILAIRE',
'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' : 'Comment regarder tous les films Marvel dans l'ordre de l'histoire - Parade : Divertissement, Recettes, Santé, Vie, Vacances',
'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 | Histoire, personnages, faits et films | Britannia',
'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' : 'Capitaine 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'
},
[…]
]

Regardons le fichier "Scraped_Images" pour vérifier les images téléchargées.

Scraped Images

Lisez aussi: Types de sociétés et comment incorporer votre entreprise en démarrage

Conclusion

Nous avons fait le grattage et le téléchargement de Google Images, ce qui était nécessaire pour une raison quelconque, avec python. Si vous souhaitez obtenir les images dont vous avez besoin de Google sans écrire de code, explorez l'API Zenserp. Voici sa documentation puissante et merveilleuse qui est constamment mise à jour.