Scrape und lade Google Bilder mit Python herunter

Veröffentlicht: 2023-01-02

Die zunehmende Verbreitung von Web Scraping hat seine Einsatzgebiete erheblich erweitert. Viele KI-Anwendungen füttern heute Web-Scraping-Datensätze regelmäßig mit aktuellen Daten. Es findet ein regelmäßiger und ununterbrochener Datenfluss von Ziel-Webseiten zu den Datensätzen von Anwendungen der künstlichen Intelligenz statt.

Verwandter Beitrag: Der Einfluss der künstlichen Intelligenz auf die Zukunft des Kundenerfolgs

Die Bildverarbeitung ist einer der beliebtesten Bereiche in Anwendungen der künstlichen Intelligenz. Bildverarbeitung ist ein Gebiet der Informatik, das sich darauf konzentriert, Computer in die Lage zu versetzen, Objekte und Personen in Bildern und Videos zu identifizieren und zu verstehen. Wie andere Arten der künstlichen Intelligenz zielt die Bildverarbeitung darauf ab, Aufgaben auszuführen und zu automatisieren, die menschliche Fähigkeiten replizieren. In diesem Fall versucht die Bildverarbeitung, sowohl die Art und Weise zu kopieren, wie Menschen sehen, als auch die Art und Weise, wie sie dem, was sie sehen, einen Sinn geben.

Die Daten, die für die Entwicklung von Algorithmen und die Reduzierung von Fehlermargen in vielen Bereichen, insbesondere in Bildverarbeitungsprojekten, benötigt werden, werden durch Web Scraping gewonnen. In diesem Artikel werden wir eine Anwendung entwickeln, die häufig in Bildverarbeitungsprojekten verwendet wird. Wir werden Google Images mit der Programmiersprache Python kratzen und herunterladen. Also lasst uns anfangen.

Projektaufbau

Öffnen wir zunächst einen Ordner auf dem Desktop. Lassen Sie uns ein Terminal in diesem Dateipfad öffnen und die erforderlichen Bibliotheken installieren, indem Sie den folgenden Befehl ausführen.

pip install fordert bs4 an

Nachdem wir die erforderlichen Bibliotheken installiert haben, erstellen wir eine Datei mit dem Namen „index.py“ im Ordner.

Code

Fügen wir die folgenden Codes in die von uns erstellte Datei „index.py“ ein.

Anfragen importieren, re, json, urllib.request
aus bs4 import BeautifulSoupheaders = {
„User-Agent“: „Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, wie 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)
Suppe = 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)

für index, (image_data, image_link) in enumerate(zip(soup.select(target_image_path), full_resolution_images), start=1):

append_image_to_list(image_data=Bilddaten, image_link=Bildlink)

print(f'{index}. Download des Bildes gestartet')

download_image(image_link=image_link, index=index)

print(f'{index}. Bild erfolgreich heruntergeladen')

print(f'scraped und heruntergeladene Bilder: {google_images}')

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

def get_resolution_image(matched_resolution_images):
zurückkehren [
bytes(bytes(img, "ascii").decode("unicode-escape"), "ascii").decode("unicode-escape") für img in matched_resolution_images
]

def convert_image_to_json():
all_script_tags =uppe.select(“script”)
images_data = „“.join(re.findall(r“AF_initDataCallback\(([^<]+)\);“, str(all_script_tags)))
fixed_images_data = json.dumps (images_data)
gib json.loads (fixed_images_data) zurück

def append_image_to_list(Bilddaten, Bildlink):
google_images.append({
„Bildtitel“: image_data.select_one(targeted_image_base_html_path)[“Titel“],
„image_source_link“: image_data.select_one(targetted_image_base_html_path)[“href“],
„Bildlink“: Bildlink
})

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

scrape_and_download_google_images()

Wenn wir die Codes untersuchen, schauen wir uns zuerst die Felder mit statischen Werten an. Die folgenden Felder sind als statische Werte definiert. Wir geben den Namen und die Eigenschaften des Bildes an, das wir mit der Variable queryParams kratzen und herunterladen möchten.

Lesen Sie auch: Das ChatGPT – seine Auswirkungen auf die Unternehmen

Überschriften = {
„User-Agent“: „Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, wie 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“
targeted_image_base_html_path = „.VFACy.kGQAp.sMi44c.lNHeqe.WGvvNb“

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

google_images = []

Bei der Methode scrape_and_download_google_images() beginnt der Stream. Zielbilder werden geschabt und dann in den von uns angegebenen Ordner heruntergeladen.

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)

für index, (image_data, image_link) in enumerate(zip(soup.select(target_image_path), full_resolution_images), start=1):

append_image_to_list(image_data=Bilddaten, image_link=Bildlink)

print(f'{index}. Download des Bildes gestartet')

download_image(image_link=image_link, index=index)

print(f'{index}. Bild erfolgreich heruntergeladen')

print(f'scraped und heruntergeladene Bilder: {google_images}')

Das Herunterladen des geschabten Bildes in den Ordner erfolgt in der Methode download_image(image_link=image_link, index=index). Das mit dieser Methode erstellte Bild wird in „Scraped_Images“ gespeichert, das wir zuvor zum Speicherort des Projekts hinzugefügt haben.

Hinweis: Erstellen Sie den Ordner „Scraped_Images“ in der Projektstruktur, bevor Sie die Anwendung ausführen

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

Lesen Sie auch: Was sind die Anwendungen und Vorteile von Blockchain-as-a-Service für Unternehmen?

Laufen

Um die Anwendung auszuführen, öffnen wir ein Terminal am Speicherort der Datei und führen den folgenden Befehl aus.

python-index.py

Nachdem die Anwendung ausgeführt wurde, werden die folgenden Informationen auf der Konsole der Anwendung gedruckt.

1. Download des Bildes gestartet
1. Bild erfolgreich heruntergeladen
2. Download des Bildes gestartet
2. Bild erfolgreich heruntergeladen
3. Download des Bildes gestartet
3. Bild erfolgreich heruntergeladen
4. Download des Bildes gestartet
4. Bild erfolgreich heruntergeladen
5. Download des Bildes gestartet
5. Bild erfolgreich heruntergeladen
6. Download des Bildes gestartet
6. Bild erfolgreich heruntergeladen
7. Download des Bildes gestartet
7. Bild erfolgreich heruntergeladen
[…]
48. Download des Bildes gestartet
48. Bild erfolgreich heruntergeladengescrapte und heruntergeladene Bilder:
[
{
'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-Universum – 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 | Die offizielle Seite für Marvel-Filme, Charaktere, Comics, 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': 'Marvel-Filme und -Shows | 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': 'Eine Einführung in Marvel für Neulinge | VERDRAHTET',
'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': 'Wie man jeden Marvel-Film in der Reihenfolge der Geschichte anschaut – Parade: Unterhaltung, Rezepte, Gesundheit, Leben, Feiertage',
'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 | Geschichte, Charaktere, Fakten und Filme | 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'
},
[…]
]

Schauen wir uns die Datei „Scraped_Images“ an, um die heruntergeladenen Bilder zu überprüfen.

Scraped Images

Lesen Sie auch: Arten von Unternehmen und wie Sie Ihr Startup-Unternehmen gründen

Abschluss

Wir haben das Scraping und Herunterladen von Google-Bildern, das aus irgendeinem Grund erforderlich war, mit Python durchgeführt. Wenn Sie die benötigten Bilder von Google erhalten möchten, ohne Code schreiben zu müssen, erkunden Sie die Zenserp-API. Hier ist seine leistungsstarke und wunderbare Dokumentation, die ständig aktualisiert wird.