Web Scraping mit Pydoll im Jahr 2025: Schritt-für-Schritt-Anleitung

Erfahren Sie, wie Sie Pydoll für das Scraping von JavaScript-lastigen Websites verwenden, Cloudflare umgehen und mit rotierenden Proxies wie Bright Data skalieren können.
16 min lesen
Web Scraping With Pydoll blog image

In diesem Leitfaden erfahren Sie mehr:

  • Was Pydoll ist und welche Funktionen es bietet
  • Wie man damit JavaScript-gesteuerte Websites scrapen kann
  • Wie man den Cloudflare-Schutz umgeht
  • Seine größten Einschränkungen
  • Wie man diese Einschränkungen mit Hilfe der Integration eines rotierenden Proxys überwindet
  • Die besten Python-basierten Alternativen zu Pydoll

Lasst uns eintauchen!

Eine Einführung in Pydoll

Erfahren Sie, was Pydoll ist, wie es funktioniert und was es als Python-Bibliothek für Web-Scraping bietet.

Was es ist

Pydoll ist eine Python-Browser-Automatisierungsbibliothek, die für Web-Scraping, Tests und die Automatisierung von sich wiederholenden Aufgaben entwickelt wurde. Das Besondere an Pydoll ist, dass es den Bedarf an traditionellen Web-Treibern eliminiert. Im Detail stellt sie über das DevTools-Protokoll eine direkte Verbindung zu Browsern her – externe Abhängigkeiten sind nicht erforderlich.

Die erste stabile Version von Pydoll, Version 1.0, wurde im Februar 2025 veröffentlicht. Damit ist es ein relativ neuer Akteur im Bereich Web-Scraping. Trotzdem hat es bereits stark an Dynamik gewonnen und über 3.000 Sterne auf GitHub erhalten:

Die pydoll GitHub Sterngeschichte

Wie Sie sehen können, erfreut sich die Bibliothek in der Python-Community für Web-Scraping großer Beliebtheit.

Eigenschaften

Hier finden Sie eine Zusammenfassung der wichtigsten Funktionen von Pydoll:

  • Null Web-Treiber: Eliminiert die Abhängigkeit von Browsertreibern, reduziert Probleme mit Versionsunterschieden und vereinfacht die Einrichtung für Chromium-basierte Automatisierung.
  • Async-first Architektur: Vollständig auf Asyncio aufgebaut für hohe Gleichzeitigkeit, effiziente Speichernutzung und moderne Python-Entwicklungsmuster.
  • Menschenähnliche Interaktionen: Imitiert realistisches Tippen, Mausbewegungen und Klicken, um die Bot-Erkennung während der Automatisierung zu reduzieren.
  • Ereignisgesteuerte Funktionen: Ermöglicht Echtzeit-Reaktionen auf Browser-, DOM-, Netzwerk- und Lebenszyklusereignisse für eine reaktionsschnelle Automatisierung.
  • Multi-Browser-Unterstützung: Kompatibel mit Chrome, Edge und anderen Chromium-Browsern, die die gleiche einheitliche Schnittstelle verwenden.
  • Screenshot- und PDF-Export: Erfassen Sie ganze Seiten oder bestimmte Elemente, oder erstellen Sie hochwertige PDFs von jeder geladenen Webseite.
  • Native Umgehung von Cloudflare: Umgeht automatisch Cloudflare Anti-Bot ohne Dienste von Drittanbietern und imitiert vertrauenswürdige Browsersitzungen, wenn die IP-Reputation hoch ist.
  • Gleichzeitiges Scraping: Scraping mehrerer Seiten oder Websites parallel, wodurch die Gesamtausführungszeit drastisch reduziert wird.
  • Erweiterte Tastatursteuerung: Simuliert echte Benutzereingaben mit präziser Kontrolle über Timing, Modifikatoren und die Handhabung von Sondertasten.
  • Leistungsstarkes Ereignissystem: Ermöglicht die Überwachung und Verarbeitung von Netzwerkanfragen, Seitenladevorgängen und benutzerdefinierten Browserereignissen in Echtzeit.
  • Unterstützung von Datei-Uploads: Automatisiert das Hochladen von Dateien sowohl durch direkte Eingabe als auch durch interaktive Dateiauswahldialoge.
  • Proxy-Integration: Unterstützt die Verwendung von Proxys für IP-Rotation, Geo-Targeting oder zur Vermeidung von Ratenbeschränkungen beim Scraping.
  • Abfangen von Anfragen: Abfangen, Ändern oder Blockieren von HTTP-Anfragen und -Antworten für erweiterte Automatisierung und Scraping-Kontrolle.

Weitere Informationen finden Sie in der offiziellen Dokumentation.

Pydoll für Web Scraping verwenden: Vollständiges Tutorial

In diesem Tutorial lernst du, wie du mit Pydoll Daten aus der asynchronen, JavaScript-gesteuerten Version von “Quotes to Scrape” abrufen kannst:

Die Zielseite lädt die Daten nach 2 Sekunden

Auf dieser Seite werden die Zitatelemente mit Hilfe von JavaScript nach einer kurzen Verzögerung dynamisch dargestellt. Daher funktionieren herkömmliche Scraping-Tools nicht ohne Weiteres. Um den Inhalt dieser Seite zu extrahieren, benötigen Sie ein Browser-Automatisierungstool wie Pydoll.

Führen Sie die folgenden Schritte aus, um einen Pydoll Web Scraper zu erstellen, der dynamisch Kursdaten aus “Quotes to Scrape” extrahiert.

Schritt 1: Projekt einrichten

Bevor Sie beginnen, sollten Sie sicherstellen, dass Sie Python 3+ auf Ihrem Rechner installiert haben. Andernfalls laden Sie es herunter und folgen Sie den Installationsanweisungen.

Führen Sie dann den folgenden Befehl aus, um einen Ordner für Ihr Scraping-Projekt zu erstellen:

mkdir pydoll-scraper

Das Verzeichnis pydoll-scraper wird als Projektordner dienen.

Navigieren Sie in Ihrem Terminal zu diesem Ordner und initialisieren Sie darin eine virtuelle Python-Umgebung:

cd pydoll-scraper
python -m venv venv

Laden Sie den Projektordner in Ihre bevorzugte Python-IDE. Visual Studio Code mit der Python-Erweiterung oder PyCharm Community Edition sind geeignet.

Erstellen Sie eine scraper.py-Datei im Projektordner, die nun Folgendes enthalten sollte:

Die Struktur der Projektdatei für Web Scraping mit Pydoll

Zu diesem Zeitpunkt ist scraper.py nur ein leeres Python-Skript. Dennoch wird es bald die Logik für die Datenanalyse enthalten.

Als nächstes aktivieren Sie die virtuelle Umgebung im Terminal Ihrer IDE. Unter Linux oder macOS führen Sie aus:

source venv/bin/activate

Starten Sie unter Windows die entsprechende Funktion:

venv/Scripts/activate

Wunderbar! Ihre Python-Umgebung ist jetzt für Web-Scraping mit Pydoll eingerichtet.

Schritt #2: Pydoll einrichten

In einer aktivierten virtuellen Umgebung installieren Sie Pydoll über das Paket pydoll-python:

pip install pydoll-python

Fügen Sie nun die folgende Logik in die Datei scraper.py ein, um mit Pydoll zu arbeiten:

import asyncio
from pydoll.browser.chrome import Chrome

async def main():
    async with Chrome() as browser:
        # Launch the Chrome browser and open a new page
        await browser.start()
        page = await browser.get_page()

        # scraping logic...

# Execute the async scraping function
asyncio.run(main())

Beachten Sie, dass Pydoll eine asynchrone API für Web Scraping bereitstellt und die Verwendung der asyncio-Standardbibliothek von Python erfordert.

Großartig! Sie haben nun ein grundlegendes Pydoll-Skript eingerichtet.

Schritt 3: Verbinden Sie sich mit der Zielsite

Rufen Sie die vom Seitenobjekt bereitgestellte Methode go_to() auf, um zur Zielseite zu navigieren:

await page.go_to("https://quotes.toscrape.com/js-delayed/?delay=2000")

Der Abfrageparameter ?delay=2000 weist die Seite an, die gewünschten Daten dynamisch nach einer Verzögerung von 2 Sekunden zu laden. Dies ist eine Funktion der Ziel-Sandbox-Site, die dazu dient, das dynamische Scraping-Verhalten zu testen.

Versuchen Sie nun, das obige Skript auszuführen. Wenn alles richtig funktioniert, wird Pydoll:

  1. Eine Chrome-Instanz starten
  2. Navigieren Sie zur Zielsite
  3. Schließen Sie das Browserfenster sofort, da das Skript noch keine zusätzliche Logik enthält.

Das sollten Sie sehen können, bevor es geschlossen wird:

Die Zielseite, die von der von Pydoll kontrollierten Chrome-Instanz geladen wird

Perfekt! Sie sind bereit, die Wartelogik hinzuzufügen.

Schritt 4: Warten Sie, bis die HTML-Elemente erscheinen

Werfen Sie einen Blick auf das letzte Bild aus dem vorherigen Schritt. Es stellt den Inhalt der Seite dar, die von Pydoll in der Chrome-Instanz gesteuert wird. Sie werden feststellen, dass sie völlig leer ist – es wurden keine Daten geladen.

Der Grund dafür ist, dass die Zielsite die Daten mit einer Verzögerung von 2 Sekunden dynamisch rendert. Diese Verzögerung ist jedoch spezifisch für die Beispielsite. Dennoch ist das Warten auf das Rendern der Seite ein häufiges Szenario beim Scraping von SPAs (Single-Page Applications) und anderen dynamischen Websites, die auf AJAX basieren.

Erfahren Sie mehr in unserem Artikel über das Scraping dynamischer Websites mit Python.

Um mit diesem häufigen Szenario umzugehen, bietet Pydoll mit dieser Methode eingebaute Wartemechanismen:

  • wait_element(): Wartet auf das Erscheinen eines einzelnen Elements (mit Timeout-Unterstützung)

Die obige Methode unterstützt CSS-Selektoren, XPath-Ausdrücke und mehr – ähnlich wie das By-Objekt von Selenium funktioniert.

Nun ist es an der Zeit, sich mit dem HTML-Code der Zielseite vertraut zu machen. Öffnen Sie sie also in Ihrem Browser, warten Sie, bis die Anführungszeichen geladen sind, klicken Sie mit der rechten Maustaste auf eines der Anführungszeichen und wählen Sie die Option “Inspect”:

Der HTML-Code der Zitatelemente

Im DevTools-Bedienfeld werden Sie sehen, dass jedes Zitat in ein

mit der Klasse quote. Das bedeutet, dass Sie sie mit dem CSS-Selektor ansteuern können:

.quote

Verwenden Sie nun Pydoll, um zu warten, bis diese Elemente erscheinen, bevor Sie fortfahren:

await page.wait_element(By.CSS_SELECTOR, ".quote", timeout=3)

Vergessen Sie nicht, By zu importieren:

from pydoll.constants import By

Führen Sie das Skript erneut aus, und diesmal werden Sie sehen, dass Pydoll auf das Laden der Zitatelemente wartet, bevor es den Browser schließt. Gute Arbeit!

Schritt Nr. 5: Vorbereiten auf Web Scraping

Denken Sie daran, dass die Zielseite mehr als nur ein Zitat enthält. Da Sie alle Zitate abrufen wollen, benötigen Sie eine Datenstruktur, die diese Daten enthält. Ein einfaches Array funktioniert perfekt, also initialisieren Sie eines:

quotes = []

Um Elemente auf der Seite zu finden, bietet Pydoll zwei praktische Methoden:

  • find_element(): Findet das erste übereinstimmende Element
  • find_elements(): Findet alle übereinstimmenden Elemente

Genau wie bei wait_element() akzeptieren diese Methoden einen Selektor mit dem By-Objekt.

Wählen Sie also alle Zitatelemente auf der Seite mit aus:

quote_elements = await page.find_elements(By.CSS_SELECTOR, ".quote")

Als Nächstes durchlaufen Sie die Elemente in einer Schleife und machen sich bereit, Ihre Scraping-Logik anzuwenden:

for quote_element in quote_elements:
  # Scraping logic...

Großartig! Zeit für die Logik der Datenextraktion.

Schritt Nr. 6: Implementierung der Logik für die Datenanalyse

Beginnen Sie mit der Untersuchung eines einzelnen Anführungszeichen-Elements:

Der HTML-Code eines Zitat-Elements

Wie Sie dem obigen HTML entnehmen können, enthält ein einzelnes Anführungszeichen-Element:

  • Das Textzitat in einem .text-Knoten
  • Der Autor im Element .author
  • Eine Liste von Tags in den .tag-Elementen

Implementieren Sie die Scraping-Logik, um diese Elemente auszuwählen und die gewünschten Daten daraus zu extrahieren:

# Extract the quote text (and remove curly quotes)
text_element = await quote_element.find_element(By.CSS_SELECTOR, ".text")
text = (await text_element.get_element_text()).replace("“", "").replace("”", "")

# Extract the author name
author_element = await quote_element.find_element(By.CSS_SELECTOR, ".author")
author = await author_element.get_element_text()

# Extract all associated tags
tag_elements = await quote_element.find_elements(By.CSS_SELECTOR, ".tag")
tags = [await tag_element.get_element_text() for tag_element in tag_elements]

Hinweis: Die Methode replace() entfernt die unnötigen geschweiften Anführungszeichen aus dem extrahierten Anführungstext.

Verwenden Sie nun die gescrapten Daten, um ein neues Wörterbuchobjekt zu erstellen, und fügen Sie es dem Array Zitate hinzu:

# Populate a new quote with the scraped data
quote = {
    "text": text,
    "author": author,
    "tags": tags
}
# Append the extracted quote to the list
quotes.append(quote)

Gut gemacht! Jetzt müssen Sie die gesammelten Daten nur noch in CSV exportieren.

Schritt Nr. 7: Exportieren in CSV

Derzeit werden die gesammelten Daten in einer Python-Liste gespeichert. Erleichtern Sie den Austausch und die Erkundung mit anderen, indem Sie die Daten in ein für Menschen lesbares Format wie CSV exportieren.

Erstellen Sie mit Python eine neue Datei namens quotes.csv und füllen Sie sie mit den ausgewerteten Daten:

with open("quotes.csv", "w", newline="", encoding="utf-8") as csvfile:
            # Add the header
            fieldnames = ["text", "author", "tags"]
            writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

            # Populate the output file with the scraped data
            writer.writeheader()
            for quote in quotes:
                writer.writerow(quote)

Denken Sie daran, csv aus der Python-Standardbibliothek zu importieren:

import csv

Auftrag erfüllt! Dein Pydoll-Kratzer ist bereit für die Ausführung.

Schritt #8: Alles zusammenfügen

Die Datei scraper.py sollte nun enthalten:

import asyncio
from pydoll.browser.chrome import Chrome
from pydoll.constants import By
import csv

async def main():
    async with Chrome() as browser:
        # Launch the Chrome browser and open a new page
        await browser.start()
        page = await browser.get_page()

        # Navigate to the target page
        await page.go_to("https://quotes.toscrape.com/js-delayed/?delay=2000")

        # Wait up to 3 seconds for the quote elements to appear
        await page.wait_element(By.CSS_SELECTOR, ".quote", timeout=3)

        # Where to store the scraped data
        quotes = []

        # Select all quote elements
        quote_elements = await page.find_elements(By.CSS_SELECTOR, ".quote")

        # Iterate over them and scrape data from them
        for quote_element in quote_elements:
            # Extract the quote text (and remove curly quotes)
            text_element = await quote_element.find_element(By.CSS_SELECTOR, ".text")
            text = (await text_element.get_element_text()).replace("“", "").replace("”", "")

            # Extract the author
            author_element = await quote_element.find_element(By.CSS_SELECTOR, ".author")
            author = await author_element.get_element_text()

            # Extract all tags
            tag_elements = await quote_element.find_elements(By.CSS_SELECTOR, ".tag")
            tags = [await tag_element.get_element_text() for tag_element in tag_elements]

            # Populate a new quote with the scraped data
            quote = {
                "text": text,
                "author": author,
                "tags": tags
            }
            # Append the extracted quote to the list
            quotes.append(quote)

    # Export the scraped data to CSV
    with open("quotes.csv", "w", newline="", encoding="utf-8") as csvfile:
                # Add the header
                fieldnames = ["text", "author", "tags"]
                writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

                # Populate the output file with the scraped data
                writer.writeheader()
                for quote in quotes:
                    writer.writerow(quote)

# Execute the async scraping function
asyncio.run(main())

Wahnsinn! In weniger als 60 Zeilen Code können Sie einen Web-Scraping-Bot mit Pydoll erstellen.

Testen Sie das obige Skript, indem Sie es ausführen:

python scraper.py

Sobald die Ausführung abgeschlossen ist, erscheint eine quotes.csv-Datei in Ihrem Projektordner. Wenn Sie sie öffnen, sehen Sie die gesammelten Daten übersichtlich geordnet:

Die Ausgabedaten in quotes.csv

Et voilà! Ihr Pydoll Web Scraping Script funktioniert wie erwartet.

Umgehung von Cloudflare mit Pydoll

Bei der Interaktion mit einer Website in einem Browser-Automatisierungstool besteht eine der größten Herausforderungen in Web Application Firewalls (WAFs). Denken Sie an Lösungen wie Cloudflare, die in der Regel über einen fortschrittlichen Anti-Bot-Schutz verfügen.

Wenn der Verdacht besteht, dass Ihre Anfragen von einem automatischen Browser stammen, zeigen diese Systeme in der Regel ein CAPTCHA an. In einigen Fällen zeigen sie es allen Nutzern beim ersten Besuch der Website an.

Das Umgehen von CAPTCHAs in Python ist kein Kinderspiel. Es gibt jedoch Möglichkeiten, Cloudflare so auszutricksen, dass es Sie für einen echten Benutzer hält, so dass es gar nicht erst ein CAPTCHA anzeigt. Hier kommt Pydoll ins Spiel, das eine spezielle API für genau diesen Zweck bereitstellt.

Um zu demonstrieren, wie es funktioniert, werden wir die Testseite “Antibot Challenge” von der ScrapingCourse-Website verwenden:

Automatische Cloudflare-Überprüfung auf der Zielseite

Wie Sie sehen können, führt die Seite immer die Cloudflare JavaScript Challenge durch. Sobald sie umgangen wurde, zeigt sie einige Beispielinhalte an, um zu bestätigen, dass der Anti-Bot-Schutz überwunden wurde.

Pydoll bietet zwei Ansätze für den Umgang mit Cloudflare:

  1. Kontextmanager-Ansatz: Behandelt die Anti-Bot-Herausforderung synchron und hält die Skriptausführung an, bis die Herausforderung gelöst ist.
  2. Ansatz der Hintergrundverarbeitung: Verarbeitet den Anti-Bot asynchron im Hintergrund.

Wir werden beide Methoden behandeln. Wie in den offiziellen Dokumenten erwähnt, ist jedoch zu beachten, dass die Umgehung von Cloudflare nicht immer funktioniert. Das liegt an Problemen wie IP-Reputation oder Navigationsverlauf.

Für fortgeschrittene Techniken lesen Sie bitte unser vollständiges Tutorial zum Scraping von Cloudflare-geschützten Websites.

Kontext-Manager-Ansatz

Um Pydoll automatisch die Cloudflare Anti-Bot-Herausforderung für dich handhaben zu lassen, benutze die expect_and_bypass_cloudflare_captcha() Methode wie folgt:

import asyncio
from pydoll.browser.chrome import Chrome
from pydoll.constants import By

async def main():
    async with Chrome() as browser:
        # Launch the Chrome browser and open a new page
        await browser.start()
        page = await browser.get_page()

        # Wait for the Cloudflare challenge to be executed
        async with page.expect_and_bypass_cloudflare_captcha():
            # Connect to the Cloudflare-protected page:
            await page.go_to("https://www.scrapingcourse.com/antibot-challenge")
            print("Waiting for Cloudflare anti-bot to be handled...")

        # This code runs only after the anti-bot is successfully bypassed
        print("Cloudflare anti-bot bypassed! Continuing with automation...")

        # Print the text message on the success page
        await page.wait_element(By.CSS_SELECTOR, "#challenge-title", timeout=3)
        success_element = await page.find_element(By.CSS_SELECTOR, "#challenge-title")
        success_text = await success_element.get_element_text()
        print(success_text)

asyncio.run(main())

Wenn Sie dieses Skript ausführen, umgeht das Chrome-Fenster automatisch die Herausforderung und lädt die Zielseite.

Die Ausgabe wird sein:

Waiting for Cloudflare anti-bot to be handled...
Cloudflare anti-bot bypassed! Continuing with automation...
You bypassed the Antibot challenge! :D

Ansatz für die Hintergrundverarbeitung

Wenn Sie es vorziehen, die Skriptausführung nicht zu blockieren, während Pydoll die Cloudflare-Herausforderung bearbeitet, können Sie die Methoden enable_auto_solve_cloudflare_captcha() und disable_auto_solve_cloudflare_captcha() wie folgt verwenden:

import asyncio
from pydoll.browser import Chrome
from pydoll.constants import By

async def main():
    async with Chrome() as browser:
        # Launch the Chrome browser and open a new page
        await browser.start()
        page = await browser.get_page()

        # Enable automatic captcha solving before navigating
        await page.enable_auto_solve_cloudflare_captcha()

        # Connect to the Cloudflare-protected page:
        await page.go_to("https://www.scrapingcourse.com/antibot-challenge")
        print("Page loaded, Cloudflare anti-bot will be handled in the background...")

        # Disable anti-bot auto-solving when no longer needed
        await page.disable_auto_solve_cloudflare_captcha()

        # Print the text message on the success page
        await page.wait_element(By.CSS_SELECTOR, "#challenge-title", timeout=3)
        success_element = await page.find_element(By.CSS_SELECTOR, "#challenge-title")
        success_text = await success_element.get_element_text()
        print(success_text)

asyncio.run(main())

Auf diese Weise kann Ihr Scraper andere Operationen durchführen, während Pydoll im Hintergrund die Anti-Bot-Herausforderung von Cloudflare löst.

Dieses Mal wird die Ausgabe lauten:

Page loaded, Cloudflare anti-bot will be handled in the background...
You bypassed the Antibot challenge! :D

Beschränkungen dieses Ansatzes für Web Scraping

Wenn Sie mit Pydoll – oder jedem anderen Scraping-Tool –zu viele Anfragen senden, ist die Wahrscheinlichkeit groß, dass Sie vom Zielserver blockiert werden. Das liegt daran, dass die meisten Websites eine Ratenbegrenzung einführen, um zu verhindern, dass Bots (wie Ihr Scraping-Skript) ihre Server mit Anfragen überschwemmen.

Dies ist eine gängige Technik gegen Scraping und DDoS. Schließlich möchte niemand, dass seine Website mit automatisiertem Verkehr überflutet wird.

Selbst wenn Sie sich an bewährte Verfahren wie die Einhaltung von robots.txt halten, können viele Anfragen von derselben IP-Adresse aus Verdacht erregen. Infolgedessen können Sie immer noch auf 403 Forbidden oder 429 Too Many Requests Fehler stoßen.

Dies lässt sich am besten vermeiden, indem Sie Ihre IP-Adresse mithilfe eines Web-Proxys rotieren.

Falls Sie damit nicht vertraut sind: Ein Web-Proxy fungiert als Mittelsmann zwischen Ihrem Scraper und der Ziel-Website. Er leitet Ihre Anfragen weiter und gibt die Antworten zurück, so dass es für die Zielseite so aussieht, als käme der Datenverkehr vom Proxy und nicht von Ihrem eigenen Rechner.

Diese Technik hilft nicht nur, Ihre echte IP-Adresse zu verbergen, sondern ist auch nützlich, um geografische Beschränkungen und viele andere Anwendungsfälle zu umgehen.

Nun gibt es verschiedene Arten von Proxys. Um zu vermeiden, dass Sie blockiert werden, brauchen Sie einen hochwertigen Anbieter, der echte rotierende Proxys anbietet, wie Bright Data.

Im nächsten Abschnitt erfahren Sie, wie Sie die rotierenden Proxys von Bright Data mit Pydoll integrieren können, um Webseiten effektiver zu scrapen – vor allem im großen Maßstab.

Integration von Pydoll mit den rotierenden Proxies von Bright Data

Bright Data kontrolliert eines der größten Proxynetzwerke der Welt, auf das Fortune-500-Unternehmen und über 20.000 Kunden vertrauen. Sein Proxy-Netzwerk umfasst:

Führen Sie die folgenden Schritte aus und erfahren Sie, wie Sie die Bright Data-Proxys für Privatanwender mit Pydoll verwenden können.

Wenn Sie noch kein Konto haben, melden Sie sich bei Bright Data an. Andernfalls melden Sie sich an, um auf Ihr Dashboard zuzugreifen:

Das Bright Data Dashboard

Klicken Sie auf dem Dashboard auf die Schaltfläche “Proxy-Produkte abrufen”:

Sie werden auf die Seite “Proxies & Scraping-Infrastruktur” weitergeleitet:

Die Seite "Proxies & Scraping Infrastruktur".

Suchen Sie in der Tabelle die Zeile “Wohnen” und klicken Sie sie an:

Anklicken der Zeile "Wohnen

Sie gelangen auf die Seite zur Einrichtung des Proxys für Privatanwender:

Die Seite "Wohnen"

Wenn dies Ihr erstes Mal ist, folgen Sie dem Einrichtungsassistenten, um den Proxy nach Ihren Bedürfnissen zu konfigurieren. Wenn Sie Hilfe benötigen, wenden Sie sich an den 24/7-Support.

Gehen Sie auf die Registerkarte “Übersicht” und suchen Sie den Host, den Port, den Benutzernamen und das Passwort Ihres Proxys:

Die Proxy-Anmeldeinformationen

Verwenden Sie diese Angaben, um Ihre Proxy-URL zu erstellen:

proxy_url = "<brightdata_proxy_username>:<brightdata_proxy_password>@<brightdata_proxy_host>:<brightdata_proxy_port>";

Ersetzen Sie die Platzhalter (, , , ) durch Ihre tatsächlichen Proxy-Anmeldedaten.

Stellen Sie sicher, dass das Proxy-Produkt aktiviert ist, indem Sie den Schalter von “Aus” auf “Ein” umlegen:

Anklicken des Aktivierungsknotens

Jetzt, wo du deinen Proxy fertig hast, kannst du ihn in Pydoll integrieren, indem du die eingebauten Proxy-Konfigurationsmöglichkeiten nutzt:

import asyncio
from pydoll.browser.chrome import Chrome
from pydoll.browser.options import Options
from pydoll.constants import By
import traceback

async def main():
    # Create browser options
    options = Options()

    # The URL of your Bright Data proxy
    proxy_url = "<brightdata_proxy_username>:<brightdata_proxy_password>@<brightdata_proxy_host>:<brightdata_proxy_port>" # Replace it with your proxy URL

    # Configure the proxy integration option
    options.add_argument(f"--proxy-server={proxy_url}")

    # To avoid potential SSL errors
    options.add_argument("--ignore-certificate-errors")

    # Start browser with proxy configuration
    async with Chrome(options=options) as browser:
        await browser.start()
        page = await browser.get_page()

        # Visit a special page that returns the IP of the caller
        await page.go_to("https://httpbin.io/ip")

        # Extract the page content containing only the IP of the incoming
        # request and print it
        body_element = await page.find_element(By.CSS_SELECTOR, "body")
        body_text = await body_element.get_element_text()
        print(f"Current IP address: {body_text}")

# Execute the async scraping function
asyncio.run(main())

Jedes Mal, wenn Sie dieses Skript ausführen, sehen Sie dank der Proxy-Rotation von Bright Data eine andere Ausgangs-IP-Adresse.

Hinweis: Normalerweise unterstützt das --proxy-server-Flag von Chrome keine authentifizierten Proxys. Der erweiterte Proxy-Manager von Pydoll hebt diese Einschränkung jedoch auf und ermöglicht die Verwendung passwortgeschützter Proxy-Server.

Mit den rotierenden Proxys von Bright Data ist die Pydoll-Proxy-Rotation einfach, zuverlässig und skalierbar!

Alternativen zu Pydoll für Web Scraping

Pydoll ist zweifellos eine leistungsstarke Web-Scraping-Bibliothek, insbesondere für die Automatisierung von Browsern mit eingebauten Anti-Bot-Umgehungsfunktionen. Dennoch ist es nicht das einzige Werkzeug in diesem Spiel.

Im Folgenden finden Sie einige solide Pydoll-Alternativen, die eine Überlegung wert sind:

  • SeleniumBase: Ein Python-Framework, das auf den Selenium/WebDriver-APIs aufbaut und ein professionelles Toolkit für die Webautomatisierung bietet. Es unterstützt alles von End-to-End-Tests bis hin zu erweiterten Scraping-Workflows.
  • Unentdeckter ChromeDriver: Eine gepatchte Version von ChromeDriver, die entwickelt wurde, um die Erkennung durch beliebte Anti-Bot-Dienste wie Imperva, DataDome und Distil Networks zu umgehen. Ideal für Stealth Scraping bei Verwendung von Selenium.

Wenn Sie eine allgemeinere Web-Scraping-Lösung suchen, die auf jeder Website funktioniert und mehrere Programmiersprachen unterstützt, sollten Sie sich unsere Scraping-Services ansehen:

  • Scraping-Browser: Ein Selenium-, Playwright-, Puppeteer-kompatibler Browser mit eingebauten Entriegelungsfunktionen.
  • Web Scraper APIs: Vorkonfigurierte APIs zum Extrahieren strukturierter Daten aus über 100 wichtigen Domains.
  • Web Unlocker: Eine All-in-One-API, die die Freischaltung von Websites mit Anti-Bot-Schutz ermöglicht.
  • SERP-API: Eine spezielle API, die Suchmaschinenergebnisse freischaltet und vollständige SERP-Daten extrahiert.

Schlussfolgerung

In diesem Tutorial zur Proxy-Integration haben Sie gelernt, was Pydoll ist und wie es funktioniert. Wir haben erforscht, wie man es für Web Scraping auf einer JavaScript-gesteuerten Website verwenden kann und wie man seine wichtigste
Einschränkung durch Proxy-Integration umgehen kann.

Sie haben auch verstanden, warum die Verwendung von Pydoll ohne einen IP-Rotationsmechanismus zu unzuverlässigen Ergebnissen führen kann. Für eine stabile Leistung, verbesserte Sicherheit und Skalierbarkeit müssen Sie einen vertrauenswürdigen Proxy-Anbieter wählen. Sparen Sie Zeit und Mühe, indem Sie sich direkt an den besten Proxy-Anbieter auf dem Markt wenden, Bright Data.

Erstellen Sie ein Konto und testen Sie unsere Proxys noch heute kostenlos!

Keine Kreditkarte erforderlich