Einführung: –
Maschinelles Lernen treibt die technologischen Wunder von heute an, wie fahrerlose Autos, Raumflüge, Bild- und Sprachakkreditierung. Trotz dieses, Ein Data-Science-Profi würde eine große Datenmenge benötigen, um ein robustes und zuverlässiges Modell für maschinelles Lernen für solche Geschäftsprobleme zu erstellen.
Data Mining oder Datensammlung ist ein sehr primitiver Schritt im Data Science-Lebenszyklus. Nach kaufmännischen Anforderungen, Möglicherweise müssen Sie Daten aus Quellen wie Servern sammeln, Aufzeichnungen, Datenbanken, API, SAP Web- oder Online-Repositorys.
Web-Scraping-Tools wie Selenium können große Datenmengen abkratzen, als Text und Bild, in relativ kurzer Zeit.
Inhaltsverzeichnis: –
- Was ist Web-Scraping??
- Warum Web-Scraping?
- Wie Web Scraping nützlich ist
- Was ist Selen??
- Einstellungen und Tools
- Implementieren von Image Scraping mit Selenium Python
- Headless Chrome-Browser
- Alles zusammenstellen
- Abschließende Anmerkungen
Was ist Web-Scraping?? : –
Web-Scrapping, auch genannt „Verfolgung“ Ö „spinnen“ ist die Technik der automatischen Erfassung von Daten aus einer Online-Quelle, in der Regel eines Webportals. Obwohl Web Scrapping eine einfache Möglichkeit ist, in relativ kurzer Zeit eine große Datenmenge zu erhalten, erhöht den Stress auf dem Server, auf dem die Schriftart gehostet wird.
Dies ist auch einer der Hauptgründe, warum viele Websites es nicht ermöglichen, alles auf ihrem Webportal zu kratzen.. Trotz dieses, solange es die Hauptfunktion der Online-Quelle nicht unterbricht, es ist durchaus akzeptabel.
Warum Web-Scraping?? –
Es gibt eine große Menge an Daten im Web, die Menschen nutzen können, um geschäftliche Anforderungen zu erfüllen. Deswegen, Es ist ein Werkzeug oder eine Technik erforderlich, um diese Informationen aus dem Web zu sammeln. Und hier kommt das Konzept des Web-Scrapping ins Spiel..
Was nützt Web Scraping?? –
Web-Scraping kann uns helfen, eine riesige Menge an Kundendaten zu extrahieren, Produkte, Menschen, Aktienmärkte, etc.
Von einem Webportal gesammelte Daten können verwendet werden, als E-Commerce-Portal, Jobportale, Social-Media-Kanäle, um das Kaufverhalten der Kunden zu verstehen, Abnutzungsverhalten der Arbeitnehmer und Kundengefühle, und die Liste geht weiter.
Die beliebtesten Bibliotheken oder Frameworks, die in Python für das Web verwendet werden – Verschrotten Sohn BeautifulSoup, Scrappy und Selen.
In diesem Beitrag, Wir werden über Web-Scraping mit Selenium in Python sprechen. Y la cereza en la parte de arriba veremos cómo podemos recabar imágenes de la web que puede usar para crear datos de trenes para su proyecto de tiefes LernenTiefes Lernen, Eine Teildisziplin der Künstlichen Intelligenz, verlässt sich auf künstliche neuronale Netze, um große Datenmengen zu analysieren und zu verarbeiten. Diese Technik ermöglicht es Maschinen, Muster zu lernen und komplexe Aufgaben auszuführen, wie Spracherkennung und Computer Vision. Seine Fähigkeit, sich kontinuierlich zu verbessern, wenn mehr Daten zur Verfügung gestellt werden, macht es zu einem wichtigen Werkzeug in verschiedenen Branchen, von Gesundheit....
Was ist Selen??
Selen ist ein webbasiertes Open-Source-Automatisierungstool. Selen wird hauptsächlich für Tests in der Industrie verwendet, aber es kann auch verwendet werden, um den Stoff abzukratzen. Wir werden den Chrome-Browser verwenden, aber Sie können ihn in jedem Browser ausprobieren, es ist fast das gleiche.
Sehen wir uns nun an, wie Sie Selenium für Web Scraping verwenden.
Einstellungen und Tools: –
- Installation:
- Selen mit pip . installieren
pip installieren Selen
- Selen mit pip . installieren
- Laden Sie den Chrome-Treiber herunter:
So laden Sie Webtreiber herunter, Sie können eine der folgenden Methoden auswählen:- Sie können den Chrome-Treiber direkt über den folgenden Link herunterladen:
https://chromedriver.chromium.org/downloads - Oder Sie laden es direkt mit der nächsten Codezeile herunter:Controller = webdriver.Chrome (ChromeDriverManager (). Installieren ())
- Sie können den Chrome-Treiber direkt über den folgenden Link herunterladen:
Sie finden die vollständige Dokumentation zu Selen hier. Die Dokumentation ist selbsterklärend, Lesen Sie es also unbedingt, um Selen mit Python zu nutzen.
Die folgenden Methoden helfen uns, Elemente auf einer Webseite zu finden (diese Methoden geben eine Liste zurück):
- find_elements_by_name
- find_elements_by_xpath
- find_elements_by_link_text
- find_elements_by_partial_link_text
- find_elements_by_tag_name
- find_elements_by_class_name
- find_elements_by_css_selector
Jetzt, einen Python-Code schreiben, um Bilder aus dem Web zu extrahieren.
Implementieren von Image Scraping mit Selenium Python: –
Paso 1: – Bibliotheken importieren
import os
import selenium
from selenium import webdriver
import time
from PIL import Image
import io
import requests
from webdriver_manager.chrome import ChromeDriverManager
from selenium.common.exceptions import ElementClickInterceptedException
Paso 2: – Installiere Treiber
#Installiere Treiber Treiber = webdriver.Chrome(ChromeDriverManager().Installieren())
Paso 3: – Geben Sie die Such-URL an
#Such-URL angeben search_url=“https://www.google.com/search?q={Q}&tbm=isch&EL = on% 3Afc&hl=de&ved = 0CAIQpwVqFwoTCKCa1c6s4-oCFQAAAAAdAAAAABAC&biw=1251&bih = 568" fahrer.get(search_url.format(q='Car'))
Ich habe diese spezielle URL verwendet, damit du keine Probleme bekommst, wenn du urheberrechtlich geschützte oder lizenzierte Bilder verwendest. Gegenteiliger Fall, du kannst verwenden https://google.com auch als Such-URL.
Dann suchen wir in unserer Such-URL nach Auto. Fügen Sie den Link in die driver.get-Funktion ein („Ihr Link hier“) und lass die Zelle laufen. Dies öffnet ein neues Browserfenster für diesen Link.
Paso 4: – Scrollen Sie zum Ende der Seite.
#Scrollen Sie zum Ende der Seite
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
zeit.schlaf(5)#sleep_between_interactions
Diese Codezeile würde uns helfen, zum Ende der Seite zu gelangen. Und dann geben wir ihm eine Ruhezeit von 5 Sekunden damit wir keine Probleme haben, wo wir versuchen, Elemente auf der Seite zu lesen, das ist noch nicht abgebucht.
Paso 5: – Suchen Sie die Bilder, die von der Seite abgekratzt werden sollen.
#Suchen Sie die Bilder, die von der aktuellen Seite gescrapt werden sollen
imgResults = driver.find_elements_by_xpath("//img[enthält(@Klasse,'Q4LuWd')]")
totalResults = len(imgErgebnisse)
Jetzt suchen wir nach allen Links zu Bildern, die auf dieser bestimmten Seite vorhanden sind. Wir werden eine erstellen „bereit“ um diese Links zu speichern. Dann, das zu tun, zum Browserfenster gehen, haga clic derecho en la página y seleccione ‚inspeccionar elemento‘ oder aktivieren Sie Entwicklertools mit Strg + Verschiebung + ich.
Identifizieren Sie nun jedes Attribut als Klasse, Ich würde, etc. Was in all diesen Bildern gemeinsam ist.
In unserem Fall, class = ”’ Q4LuWd ”ist in all diesen Bildern üblich.
Paso 6: – Extrahieren Sie den jeweiligen Link jedes Bildes
Wie wir können, Die auf der Seite angezeigten Bilder sind immer noch Miniaturansichten, nicht das Originalbild. Dann, um jedes Bild herunterzuladen, Wir müssen auf jedes Miniaturbild klicken und die relevanten Informationen zu diesem Bild extrahieren.
#Klicken Sie auf jedes Bild, um den entsprechenden Link zum Herunterladen zu extrahieren
img_urls = set()
zum ich In Bereich(0,len(imgErgebnisse)):
img = imgResults[ich]
Versuchen:
img.click()
zeit.schlaf(2)
current_images = driver.find_elements_by_css_selector('img.n3VNCb')
zum aktuelles_bild In aktuelle_bilder:
Wenn aktuelles_image.get_attribute('src') und 'https' In aktuelles_image.get_attribute('src'):
img_urls.add(aktuelles_image.get_attribute('src'))
außer ElementClickInterceptedException oder ElementNotInteractableException wie irren:
drucken(irren)
Dann, im obigen Code-Schnipsel, Wir führen folgende Aufgaben aus:
- Wiederholen Sie jedes Miniaturbild und klicken Sie dann darauf.
- Lass unseren Browser schlafen für 2 Sekunden (: P).
- Suchen Sie nach dem eindeutigen HTML-Tag für dieses Bild, um es auf der Seite zu platzieren
- Wir erhalten immer noch mehr als ein Ergebnis für ein bestimmtes Bild. Aber wir alle interessieren uns für den Link, um dieses Bild herunterzuladen.
- Dann, iteramos por medio de cada resultado para esa imagen y extraemos el atributo ‚src‘ davon und dann sehen wir, ob „https“ está presente en el ‚src‘ oder nicht. Dado que regularmente el link web comienza con ‚https‘.
Paso 7: – Laden Sie jedes Bild herunter und speichern Sie es im Zielverzeichnis
os.chdir('C:/Qurantine/Blog/WebScrapping/Dataset1')
baseDir=os.getcwd()
zum ich, URL-Adresse In aufzählen(img_urls):
Dateiname = f"{ich:150}.jpg"
Versuchen:
image_content = request.get(URL-Adresse).Inhalt
außer Ausnahme wie e:
drucken(F"ERROR - KANN NICHT HERUNTERLADEN {URL-Adresse} - {e}")
Versuchen:
image_file = io.BytesIO(Bildinhalt)
image = Image.open(Bilddatei).Konvertieren('RGB')
file_path = os.path.join(baseDir, Dateiname)
mit offen(Dateipfad, 'wb') wie F:
image.save(F, "JPEG", Qualität=85)
drucken(F"GERETTET - {URL-Adresse} - BEI: {Dateipfad}")
außer Ausnahme wie e:
drucken(F"ERROR - KANN NICHT SPEICHERN {URL-Adresse} - {e}")
Zusammenfassend haben Sie nun das Bild für Ihr Projekt extrahiert 😀
Notiz: – Sobald Sie den richtigen Code geschrieben haben, Der Browser ist nicht zwingend erforderlich, kann Daten ohne Browser sammeln, ein sogenanntes kopfloses Browserfenster, deshalb, Ersetze den folgenden Code durch den obigen.
Headless Chrome-Browser
#Headless Chrome Browser
von Selen importieren webdriver
opts = webdriver.ChromeOptions()
opts.kopflos =Wahr
Treiber =webdriver.Chrome(ChromeDriverManager().Installieren())
Für diesen Fall, der Browser läuft nicht im Hintergrund, was bei der Implementierung einer Lösung in der Produktion sehr nützlich ist.
Lassen Sie uns all diesen Code in eine Funktion packen, um ihn besser zu organisieren und die gleiche Idee zum Herunterladen zu implementieren 100 Bilder für jede Kategorie (als Beispiel, Autos, Pferde).
Und dieses Mal würden wir unseren Code mit der Headless-Chrom-Idee schreiben.
Alles zusammenfügen:
Paso 1: alle wichtigen Bibliotheken importieren
importieren Sie
importieren Selen
von Selen importieren Webtreiber
importieren Zeit
von PIL importieren Bild
importieren ich
importieren Anfragen
von webdriver_manager.chrome importieren ChromeDriverManager
os.chdir('C:/Qurantine/Blog/WebScrapping')
Paso 2: Chrome-Treiber installieren
#Installiere Treiber opts=webdriver.ChromeOptions() opts.headless=Wahr Treiber = webdriver.Chrome(ChromeDriverManager().Installieren() ,Optionen=Opts)
In diesem Schritt, Wir haben einen Chrome-Treiber installiert und einen kopflosen Browser verwendet, um das Web zu scratchen.
Paso 3: Such-URL angeben
search_url = "https://www.google.com/search?q={Q}&tbm=isch&EL = on% 3Afc&hl=de&ved = 0CAIQpwVqFwoTCKCa1c6s4-oCFQAAAAAdAAAAABAC&biw=1251&bih = 568" fahrer.get(search_url.format(q='Car'))
Ich habe diese spezielle URL verwendet, um lizenzfreie Bilder zu extrahieren.
Paso 4: Schreiben Sie eine Funktion, um den Cursor an das Ende der Seite zu bewegen
def scroll_to_end(Treiber):
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
zeit.schlaf(5)#sleep_between_interactions
Dieses Code-Snippet scrollt die Seite nach unten.
Paso 5. Schreiben Sie eine Funktion, um die URL jedes Bildes zu erhalten.
#keine Lizenzprobleme
def getImageUrls(Name,totalImgs,Treiber):
search_url = "https://www.google.com/search?q={Q}&tbm=isch&EL = on% 3Afc&hl=de&ved = 0CAIQpwVqFwoTCKCa1c6s4-oCFQAAAAAdAAAAABAC&biw=1251&bih = 568"
fahrer.get(search_url.format(q=Name))
img_urls = set()
img_count = 0
results_start = 0
während(img_count<totalImgs): #Jetzt aktuelle Bilder extrahieren
scroll_to_end(Treiber)
thumbnail_results = driver.find_elements_by_xpath("//img[enthält(@Klasse,'Q4LuWd')]")
totalResults = len(thumbnail_results)
drucken(F"Gefunden: {Gesamtergebnisse} Suchergebnisse. Extrahieren von Links aus{Ergebnisse_start}:{Gesamtergebnisse}")
zum img In thumbnail_results[Ergebnisse_start:Gesamtergebnisse]:
img.click()
zeit.schlaf(2)
current_images = driver.find_elements_by_css_selector('img.n3VNCb')
zum aktuelles_bild In aktuelle_bilder:
Wenn aktuelles_image.get_attribute('src') und 'https' In aktuelles_image.get_attribute('src'):
img_urls.add(aktuelles_image.get_attribute('src'))
img_count=len(img_urls)
Wenn img_count >= totalImgs:
drucken(F"Gefunden: {img_count} Bildlinks")
brechen
anders:
drucken("Gefunden:", img_count, "Suche nach weiteren Bildlinks ...")
load_more_button = driver.find_element_by_css_selector(".mye4qd")
driver.execute_script("document.querySelector('.mye4qd').klicken();")
results_start = len(thumbnail_results)
Rückkehr img_urls
Diese Funktion würde eine Liste von URLs für jede Kategorie zurückgeben (als Beispiel, Autos, Pferde, etc.)
Paso 6: Schreiben Sie eine Funktion, um jedes Bild herunterzuladen
def DownloadBilder(Ordnerpfad,Dateiname,URL-Adresse):
Versuchen:
image_content = request.get(URL-Adresse).Inhalt
außer Ausnahme wie e:
drucken(F"ERROR - KANN NICHT HERUNTERLADEN {URL-Adresse} - {e}")
Versuchen:
image_file = io.BytesIO(Bildinhalt)
image = Image.open(Bilddatei).Konvertieren('RGB')
file_path = os.path.join(Ordnerpfad, Dateiname)
mit offen(Dateipfad, 'wb') wie F:
image.save(F, "JPEG", Qualität=85)
drucken(F"GERETTET - {URL-Adresse} - BEI: {Dateipfad}")
außer Ausnahme wie e:
drucken(F"ERROR - KANN NICHT SPEICHERN {URL-Adresse} - {e}")
Dieses Code-Snippet lädt das Bild von jeder URL herunter.
Paso 7: – Schreiben Sie eine Funktion, um jedes Bild im Zielverzeichnis zu speichern
def saveInDestFolder(searchNames,destDir,totalImgs,Treiber):
zum Name In aufführen(searchNames):
path=os.path.join(destDir,Name)
Wenn nicht os.path.isdir(Weg):
os.mkdir(Weg)
drucken('Current Path',Weg)
totalLinks=getImageUrls(Name,totalImgs,Treiber)
drucken('totalLinks',totalLinks)
Wenn totalLinks ist Keiner:
drucken('Bilder nicht gefunden für :',Name)
fortsetzen
anders:
zum ich, Verknüpfung In aufzählen(totalLinks):
Dateiname = f"{ich:150}.jpg"
DownloadBilder(Weg,Dateiname,Verknüpfung)
searchNames=['Car','horses']
destDir=f'./Dataset2/'
totalImgs=5
saveInDestFolder(searchNames,destDir,totalImgs,Treiber)
Dieses Code-Snippet speichert jedes Bild im Zielverzeichnis.
Abschließende Anmerkungen
Ich habe meinen Teil versucht, Web Scraping mit Selenium mit Python so einfach wie möglich zu erklären. Fühlen Sie sich frei, Ihre Fragen zu kommentieren. Ich werde Ihnen gerne antworten..
Sie können mein Github-Repository klonen, um den gesamten Code und die Daten herunterzuladen, Klicke hier!!
Über den Autor

Praveen Kumar Anwla
Ich habe als Data Scientist bei produktgestützten Wirtschaftsprüfungsgesellschaften und Big . gearbeitet 4 Für fast 5 Jahre. Ich habe an verschiedenen NLP-Frameworks gearbeitet, Modernstes maschinelles Lernen und Deep Learning zur Lösung von Geschäftsproblemen. Bitte zögern Sie nicht zu überprüfen mein persönlicher Blog, wo ich Themen aus dem maschinellen Lernen abdecke: künstliche Intelligenz, Chatbots bis hin zu Visualisierungstools (Malen, QlikView, etc.) und verschiedene Cloud-Plattformen wie Azure, IBM und die AWS-Cloud.



