Web Scraping beherrschen: Wie man Proxies in Python rotieren lässt
Raluca Penciuc am 03. Februar 2023

Im heutigen digitalen Zeitalter ist Web Scraping immer beliebter geworden. Mit dieser zunehmenden Beliebtheit geht jedoch auch eine verstärkte Kontrolle durch Websites und Dienste einher, die nicht wollen, dass ihre Daten gescannt werden.
Wenn Sie Ihre Datenextraktionsaufgaben automatisieren möchten, sind Sie vielleicht schon auf die Notwendigkeit gestoßen, Proxys zu verwenden, um Ihre IP-Adresse zu maskieren. Wenn Sie jedoch über einen längeren Zeitraum hinweg denselben Proxy verwenden, können Sie leicht gesperrt werden. An dieser Stelle kommt die Proxy-Rotation ins Spiel.
In diesem Artikel erfahren Sie, wie Sie Proxys in Python rotieren können, einschließlich der Installation der erforderlichen Voraussetzungen, der Verwendung eines einzelnen Proxys und der Erhöhung der Geschwindigkeit beim Rotieren der Proxys. Wir besprechen auch einige Tipps, wie Sie das Beste aus Ihren Proxy-Rotationsbemühungen herausholen können.
Am Ende dieses Leitfadens werden Sie in der Lage sein, Proxys wie ein Profi zu rotieren und sicherzustellen, dass Ihre Web-Scraping-Bemühungen unter dem Radar bleiben. Legen wir los!
Einrichten der Umgebung
Bevor wir beginnen, müssen wir sicherstellen, dass wir die notwendigen Werkzeuge zur Verfügung haben. Laden Sie zunächst die neueste Version von Python von der offiziellen Website herunter und installieren Sie sie.
Für dieses Tutorial werden wir Visual Studio Code als integrierte Entwicklungsumgebung (IDE) verwenden, aber Sie können auch eine andere IDE Ihrer Wahl verwenden. Erstellen Sie einen neuen Ordner für Ihr Projekt und eine neue Datei index.py, in die wir unseren Code schreiben werden.
Öffnen Sie nun das Terminal und führen Sie den folgenden Befehl aus, um das für das Senden von Anfragen erforderliche Paket zu installieren:
Pip-Installationsanfragen
Und das war's! Wir können mit der Codierung beginnen.
Eine GET-Anfrage proxifizieren
Beginnen wir mit dem Senden einer einfachen GET-Anfrage. Schreiben Sie in die neu erstellte Datei index.py den folgenden Code:
import requests
response = requests.get('https://api.ipify.org/?format=json')
print(response.text)
Führen Sie nun das Skript mit dem folgenden Befehl aus:
py index.py
Sie werden feststellen, dass das Ergebnis Ihre echte IP-Adresse ist und dass das Skript, egal wie oft Sie es ausführen, immer dasselbe Ergebnis anzeigt.
Die Idee dieses Leitfadens ist es, Ihnen zu zeigen, wie Sie Ihre echte IP-Adresse verbergen können und wie Sie bei jedem Skriptlauf eine andere IP erhalten. An dieser Stelle kommen die Proxys ins Spiel. Sie finden sie unter der folgenden Struktur:
http://proxy_username:proxy_password@proxy_host:proxy_port
Das Protokoll kann entweder "http", "https", "socks4" oder "socks5" sein, während der "proxy_username" und das "proxy_password" optional sind.
Der aktualisierte Code sollte wie folgt aussehen:
import requests
proxy_schema = {
"http": "http://proxy_username:proxy_password@proxy_host:proxy_port",
"https": "https://proxy_username:proxy_password@proxy_host:proxy_port"
}
URL = 'https://api.ipify.org/?format=json'
response = requests.get(URL, proxies=proxy_schema)
print(response.text)
Sie können die Proxy-Vorlage zu Testzwecken durch eine echte Vorlage ersetzen, die von einem kostenlosen Proxy-Dienst bereitgestellt wird. Es ist jedoch erwähnenswert, dass diese nicht zuverlässig sind und nur zu Testzwecken verwendet werden sollten.
Wie auch immer, da selbst die besten Proxys manchmal instabil sein können, ist es eine gute Praxis, Ausnahmen in unserem Code zu behandeln:
try:
URL = 'https://api.ipify.org/?format=json'
response = requests.get(URL, proxies=proxy_schema, timeout=30)
print(response.text)
except:
print('Unable to connect to the proxy')
Wenn es Ihnen gelungen ist, einen kostenlosen Proxy zu finden, sollten Sie nach der Ausführung des Codes feststellen, dass sich das Ergebnis geändert hat, da es sich nicht mehr um Ihre echte IP-Adresse handelt.
Drehen Sie die Vollmachten
Nun wollen wir sehen, wie wir mehrere Proxys verwenden können, um unsere Anfragen zu anonymisieren. Gleichzeitig werden wir uns um die Geschwindigkeit unseres Skripts kümmern. Wir werden die Anfragen asynchron senden, indem wir die Bibliothek "concurrent.futures" verwenden.
Nehmen wir zunächst an, wir hätten die folgende Liste von Proxys (oder einen Proxy-Pool):
proxy_pool = [
"http://191.5.0.79:53281",
"http://202.166.202.29:58794",
"http://51.210.106.217:443",
"http://5103.240.161.109:6666"
]
Diese kann entweder hart kodiert oder aus einer Datei gelesen werden, je nach Wunsch. Damit können wir den folgenden Code schreiben:
from concurrent.futures import ThreadPoolExecutor
with ThreadPoolExecutor(max_workers=8) as pool:
for response in list(pool.map(scrape_job, proxy_pool)):
pass
Wir initialisieren einen Thread-Pool mit maximal 8 Arbeitern, um die Funktion "scrape_job" (die bald definiert wird) auszuführen, die als Parameter ein Element aus der Liste "proxy_pool" erhält.
Die Funktion "scrape_job" entspricht nun dem Code, den wir zuvor geschrieben haben, mit einer kleinen Anpassung:
def scrape_job(proxy):
try:
URL = 'https://api.ipify.org/?format=json'
proxy_scheme = {
"http": proxy,
"https": proxy
}
response = requests.get(URL, proxies=proxy_scheme, timeout=30)
print(response.text)
except:
print('Unable to connect to the proxy')
Die Variable "proxy_scheme" wird nun dynamisch zugewiesen, je nach dem Proxy, den wir als Parameter senden. Das Skript kann weiter auf mehrere URLs ausgedehnt werden, mit einem spezifischen Timeout-Wert für jede.
Wenn das Skript ausgeführt wird, sollten mehrere GET-Anfragen gleichzeitig gesendet werden, deren Ergebnis unterschiedliche IP-Adressen sind (wenn die kostenlosen Proxys funktionieren).
Hochskalierung
Wenn es darum geht, mit der Rotation von Proxys zu beginnen, gibt es ein paar wichtige Best Practices, die dazu beitragen können, dass Ihre Proxy-Rotation so effektiv wie möglich ist. Im Folgenden finden Sie einige Tipps, die Sie beachten sollten:
Kostenlose Proxys sind ein No-Go
Kostenlose Proxy-Dienste scheinen zwar eine kostengünstige Option zu sein, sind aber oft unzuverlässig und können sogar Ihre Scraping-Bemühungen gefährden. Erwägen Sie die Investition in einen Premium-Proxy-Dienst, der ein höheres Maß an Sicherheit und Zuverlässigkeit bietet.
Test vor dem Verschrotten
Bevor Sie mit dem Scrapen beginnen, sollten Sie Ihre Proxy-Rotation testen, um sicherzustellen, dass sie wie vorgesehen funktioniert. So können Sie eventuelle Probleme erkennen und beheben, bevor sie später Probleme verursachen.
Benutzer-Agent-Rotation verwenden
Die Rotation Ihrer IP-Adresse ist eine wirksame Methode zur Umgehung von Anti-Scraping-Maßnahmen, aber sie ist nicht die einzige Technik, auf die Sie sich verlassen sollten. Wenn Sie die IP-Rotation mit der User-Agent-Rotation kombinieren, bei der die Browsersignatur geändert wird, kann es für Websites noch schwieriger werden, Ihren Scraper zu erkennen und zu blockieren.
Premium-Proxy-Dienste
Nicht alle Proxy-Dienste sind gleich, daher ist es wichtig, sich zu informieren und einen Anbieter zu wählen, der ein hohes Maß an Sicherheit und Zuverlässigkeit bietet. Suchen Sie nach einem Dienst, der eine breite Palette von IPs und Standorten sowie Funktionen wie automatische IP-Rotation und anonymes Surfen bietet.
Verwenden Sie eine Web Scraping API
Die Verwendung einer Web-Scraping-API kann eine großartige Möglichkeit sein, den Prozess der Proxy-Rotation zu vereinfachen, insbesondere wenn Sie neu im Web-Scraping sind. Eine gute Scraper-API übernimmt die Proxy-Rotation für Sie und bietet Ihnen eine saubere und benutzerfreundliche Schnittstelle für den Zugriff auf die benötigten Daten.
Sein Proxy-Rotationsmechanismus vermeidet Blöcke gänzlich, und seine erweiterte Wissensbasis macht es möglich, die Browserdaten zu randomisieren, so dass sie wie ein echter Benutzer aussehen.
Wenn Sie jedoch bei Ihrem eigenen Scraper bleiben möchten oder Ihr Anwendungsfall zu komplex ist, haben Sie auch die Möglichkeit, als Proxy auf die API zuzugreifen. Die Anfrage wird dann einfach an die API weitergeleitet, während Ihr Skript die Proxy-Rotation genießt.
Schlussfolgerung
Zusammenfassend lässt sich sagen, dass das Wissen um die Rotation von Proxys eine wesentliche Technik für Web Scraping ist, die mit Python leicht zu implementieren ist. Wenn Sie die in diesem Leitfaden beschriebenen Schritte befolgen, erhalten Sie Einblicke vom Proxying einer einzelnen Anfrage bis hin zur Beschleunigung des Proxy-Rotationsprozesses.
Außerdem haben Sie einige zusätzliche Tipps zur Proxy-Rotation entdeckt, wenn es darum geht, Ihr Projekt zu skalieren.
Denken Sie daran, dass eine effektive Proxy-Rotation den Erfolg Ihrer Web-Scraping-Projekte erheblich steigern kann, und dieser Leitfaden hat Ihnen die Werkzeuge und das Wissen an die Hand gegeben, um es wie ein Profi zu machen. Viel Spaß beim Scraping!
Nachrichten und Aktualisierungen
Bleiben Sie auf dem Laufenden mit den neuesten Web Scraping-Anleitungen und Nachrichten, indem Sie unseren Newsletter abonnieren.
We care about the protection of your data. Read our <l>Privacy Policy</l>.Privacy Policy.

Ähnliche Artikel

Erforschen Sie den detaillierten Vergleich zwischen Scrapy und Selenium für Web Scraping. Von der Datenerfassung in großem Maßstab bis hin zum Umgang mit dynamischen Inhalten - entdecken Sie die Vor- und Nachteile sowie die einzigartigen Funktionen der beiden Frameworks. Erfahren Sie, wie Sie das beste Framework für die Anforderungen und den Umfang Ihres Projekts auswählen können.


Erfahren Sie, wie Sie Proxies mit Axios & Node.js für effizientes Web Scraping nutzen können. Tipps, Code-Beispiele und die Vorteile der Verwendung von WebScrapingAPI inklusive.


Entdecken Sie 3 Möglichkeiten, wie Sie mit Puppeteer Dateien herunterladen und einen Web Scraper erstellen können, der genau das tut.
