In diesem Artikel geht es um Folgendes:
- Selenium: Was es ist und wie es verwendet wird
- Eine Schritt-für-Schritt-Anleitung zum Scraping mit Selenium
- Einbindung von Proxys mit Selenium
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:
- Gehen Sie zunächst zu Ihrem Bright Data-Dashboard und klicken Sie auf „Zone erstellen“.
- Wählen Sie „Netzwerktyp“ und klicken Sie auf „Speichern“.
- 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.
- 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.
Keine Kreditkarte erforderlich