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.
louisr
Louis Ruggeri | Support Manager
26-May-2022

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.
louisr
Louis Ruggeri | Support Manager

Lou is a Support Manager at Bright Data with a voracious appetite for knowledge, especially when it comes to data. In his spare time, he enjoys a good book, the occasional taco, and blogging about data collection.

Das könnte Sie auch interessieren

What is a proxy server & how does it work?

Was ist ein Proxy-Server und wie funktioniert er?

In diesem Leitfaden finden Sie alles, was Sie über Proxy-Server wissen müssen, einschließlich ihrer Funktionsweise, der verschiedenen derzeit verfügbaren Proxy-Typen und eines Vergleichs zwischen Proxy-Servern und VPNs, damit Ihr Unternehmen das richtige Tool für Ihr Unternehmen auswählen kann.
What is a reverse proxy

Was ist ein Reverse Proxy?

Reverse Proxys können als effizientes Verschlüsselungs-Tool dienen, die Lastverteilung unterstützen und Inhalte lokal zwischenspeichern, um sicherzustellen, dass sie schnell an die Datenkonsumenten geliefert werden. Dieser Artikel ist Ihr ultimativer Leitfaden zu Reverse Proxys.
What is a private proxy

Was ist ein privater Proxy?

Private Proxys bieten eine bessere Sicherheit, eine erhöhte Privatsphäre und eine 99,9%ige Erfolgsrate zu einem höheren Preis. Gemeinsame Proxys sind die wesentlich kostengünstigere Option für Zielwebsites mit einfacheren Website-Architekturen. Dieser Leitfaden wird Ihnen helfen, die wichtigsten Unterschiede zu verstehen und die richtige Wahl für Ihr Unternehmen zu treffen.
Puppeteer vs Selenium: Main Differences

Puppeteer im Vergleich zu Selenium: Hauptunterschiede

Dieser ultimative Leitfaden befasst sich mit den Ursprüngen beider Bibliotheken, den wichtigsten Merkmalen/Funktionen und vor allem mit der Frage: Wie Sie die beste Option für Ihr Unternehmen wählen