Anleitung zum Web Scraping mit Selenium

Dies ist die einzige Schritt-für-Schritt-Anleitung, die Sie benötigen, um in weniger als 10 Minuten mit dem Erfassen von Webdaten auf Zielseiten zu beginnen und diese als CSV-Dateien zu speichern.
6 min read
How to use Selenium for web scraping

In diesem Artikel geht es um Folgendes:

Das entsprechende GitHub-Repository für diesen Artikel finden Sie hier.

Selenium: Was es ist und wie es verwendet wird

Selenium ist eine Open-Source-Software, die eine Vielzahl von Werkzeugen und Bibliotheken enthält, die automatisierte Browseraktivitäten ermöglichen. Dazu gehören:

  • Websitebasierte elementbezogene Aktionen/Abruf (z. B. schließen, zurück, get_cookie, get_screenshot_as_png, get_window_size)
  • Testen der Website
  • Verwaltung von Warnhinweisen und Cookies (hinzufügen/entfernen)
  • Übermittlung von Bestandteilen eines Formulars
  • Datenerfassung/Web Scraping

Selenium ist kompatibel mit den meisten Browsern, darunter Firefox, Chrome, Safari und Internet Browser. Es kann verwendet werden, um Tests in einer Vielzahl von Programmiersprachen wie Python, Node.js, C#, JavaScript und PHP zu schreiben. Zur weiteren Hilfe habe ich einen Link zu der official Selenium 4.1.5 documentation library (Bibliothek mit Dokumentation über Selenium 4.1.5) eingefügt.

Puppeteer im Vergleich zu Selenium

Denjenigen unter Ihnen, die darüber nachdenken, ob sie Puppeteer oder Selenium verwenden sollten, kann ich sagen, dass Puppeteer besser geeignet ist, wenn Sie sich in erster Linie auf JavaScript und Chrome konzentrieren wollen. Selenium hingegen ist möglicherweise die bessere Wahl, wenn Sie mit mehreren verschiedenen Browsern arbeiten möchten, um Browseranwendungen zu testen und/oder Webdaten zu erfassen.

Eine Schritt-für-Schritt-Anleitung zum Scraping mit Selenium

Erster Schritt: Selenium installieren

Diejenigen unter Ihnen, die PIP (d.h. den Python Package Installer) auf Ihren Computern installiert haben, brauchen ihn nur zu öffnen und Folgendes einzugeben:

pip install -U selenium

Ansonsten können Sie PyPI herunterladen, es entpacken und ausführen:

python setup.py install

Denken Sie daran, dass Sie einen Treiber benötigen, damit Selenium mit dem Browser Ihrer Wahl zusammenarbeiten kann. Hier finden Sie Links zu einigen der gängigsten Browsertreiber:

Nehmen wir Firefox als Beispiel für einen Browser. Sie öffnen Firefox, rufen eine Webseite auf, z. B. Yahoo, suchen nach „seleniumhq“ und schließen dann den Browser. Die Codierung würde folgendermaßen aussehen:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

browser = webdriver.Firefox()

browser.get('http://www.yahoo.com')
assert 'Yahoo' in browser.title

elem = browser.find_element(By.NAME, 'p')  # Find the search box
elem.send_keys('seleniumhq' + Keys.RETURN)

browser.quit()

Zweiter Schritt: Hilfspakete importieren

Selenium wird nicht einzeln eingesetzt, sondern in Verbindung mit anderen Programmen, wie z. B. Pandas (einem einfach zu bedienenden Open-Source-Tool zur Datenanalyse). Geben Sie zu diesem Zweck Folgendes ein:

from selenium import webdriver
import time
import pandas as pd 

Dritter Schritt: Variablen definieren

Wir legen unseren Zielordner, die Suchanfrage und die Zielseite fest. In diesem Beispiel versuchen wir, verschiedene Stellenangebote, die von konkurrierenden Unternehmen auf LinkedIn veröffentlicht wurden, abzubilden. Sie sollten in etwa Folgendes eingeben:

FILE_PATH_FOLDER = 'F:....Competitive_Analysis'
search_query = 'https://www.linkedin.com/q-chief-financial-officer-jobs.html'
driver = webdriver.Chrome(executable_path='C:/.../chromedriver_win32/chromedriver.exe')
job_details = []

Vierter Schritt: HTML-Tags prüfen

HTML-Seiten haben in der Regel eine eindeutige Kennung für jedes Tag, das mit den auf einer bestimmten Zielseite angezeigten Informationen verknüpft ist. Die Vorgehensweise besteht nun darin, diese Eigenschaft der HTML-Seite zu nutzen, um die betreffende Zielseite zu durchsuchen. Gehen Sie folgendermaßen vor:

  • Klicken Sie mit der rechten Maustaste auf eine beliebige Stelle der Seite und wählen Sie „inspect“.
  • Klicken Sie dann entweder auf den Pfeil, der in der linken oberen Ecke erscheint, oder drücken Sie die Tastenkombination Strg+Umschalt+C, um ein bestimmtes Element zu untersuchen und das gewünschte HTML-Tag zu erhalten.

Folgendes wird angezeigt:

driver.get(search_query)
time.sleep(5)
job_list = driver.find_elements_by_xpath("//div[@data-tn-component='organicJob']")

Fünfter Schritt: Spezifische Datenpunkte extrahieren

Wir extrahieren unsere Zieldatenpunkte, indem wir das Attribut ,find_elements_by_xpath‘ vom Selenium Web-Treiber verwenden. Sobald die Zieldaten erfasst sind, beenden wir den Treiber und schließen den Browser.

Wir steuern die Datenpunkte wie folgt an:

  • Berufsbezeichnung
  • Unternehmen
  • Arbeitsstätte
  • Stellenbeschreibung
  • Datum, an dem das Angebot hochgeladen wurde

Folgendes wird angezeigt:

for each_job in job_list:
    # Getting job info
    job_title = each_job.find_elements_by_xpath(".//h2[@class='title']/a")[0]
    job_company = each_job.find_elements_by_xpath(".//span[@class='company']")[0]
    job_location = each_job.find_elements_by_xpath(".//span[@class='location accessible-contrast-color-location']")[0]
    job_summary = each_job.find_elements_by_xpath(".//div[@class='summary']")[0]
    job_publish_date = each_job.find_elements_by_xpath(".//span[@class='date ']")[0]
    # Saving job info 
    job_info = [job_title.text, job_company.text, job_location.text, job_summary.text, job_publish_date.text]
 # Saving into job_details
    job_details.append(job_info)
driver.quit()

Bitte beachten Sie, dass diese Selektoren vom Ziel geändert werden können. Daher sollten Sie sich vergewissern, dass die fraglichen Selektoren die richtigen sind, und nicht einfach davon ausgehen, dass schon alles stimmt.

Sechster Schritt: Daten zur Vorbereitung der Ausgabe speichern

An dieser Stelle sollten Sie dem Datenrahmen Spalten hinzufügen und das Attribut ,to_csv‘ verwenden, um alle erhaltenen Daten folgendermaßen im CSV-Format zu speichern:

job_details_df = pd.DataFrame(job_details)
job_details_df.columns = ['title', 'company', 'location', 'summary', 'publish_date']
job_details_df.to_csv('job_details.csv', index=False)

Die gewünschte CSV-Datei wird an den folgenden Ort heruntergeladen: FILE_PATH_FOLDER

Das war’s, Sie haben soeben Ihren ersten Web-Scraping-Auftrag mit Selenium erfolgreich abgeschlossen.

Einbindung von Proxys mit Selenium

Die Einbindung von Proxys mit Selenium kann Ihnen bei Folgendem helfen:

  • Daten an verschiedenen Geostandorten zu erfassen
  • Daten in großem Umfang zu erfassen, ohne Gefahr zu laufen, blockiert zu werden (z. B. Ratenbeschränkungen für IP-Adressen, die „zu viele“ gleichzeitige/aufeinanderfolgende Datenanforderungen senden) In diesem Zusammenhang möchten Sie vielleicht einen Blick auf spezielle Web-Unlocker werfen.
  • Dieses Verfahren ermöglicht Ihnen die Erfassung von Daten aus der Sicht einer echten Nutzer-IP, sodass Sie keine irreführenden Informationen von potenziell verdächtigen Zielseiten erhalten.

Die Einbindung von Proxys mit Selenium können Sie wie folgt durchführen:

  1. Gehen Sie zunächst zu Ihrem Bright Data-Dashboard und klicken Sie auf „Zone erstellen“.
  2. Wählen Sie „Netzwerktyp“ und klicken Sie auf „Speichern“.
  3. Geben Sie in Selenium in der Funktion „setProxy“ den „Proxy IP:Port“ ein, zum Beispiel zproxy.lum-superproxy.io:22225 für HTTP und HTTPS.
  4. Geben Sie unter „sendKeys“ Ihre Bright Data-Konto-ID und den Namen der Proxy-Zone ein: lum-customer-CUSTOMER-zone-YOURZONE und Ihr Zonenkennwort, das sich in den Zoneneinstellungen befindet.