ProxyScrape Residential Proxies mit Scrapy in Python verwenden
Integrieren Sie ProxyScrape Residential Proxies in Ihre Scrapy-Spider für zuverlässiges Web-Scraping mit Python. Enthält Rotations-Middleware, Authentifizierung und SOCKS5-Einrichtung.
Überblick
Scrapy ist ein leistungsstarkes Python-Framework für Web-Scraping, aber viele Websites blockieren Anfragen von einer einzelnen IP. Die Verwendung von Proxies von ProxyScrape hilft Ihnen, Anfragen zu verteilen, Rate Limits zu vermeiden und auf geografisch eingeschränkte Inhalte zuzugreifen. ProxyScrape bietet Residential-, Datacenter- und Mobile-Proxies mit HTTP- und SOCKS5-Unterstützung, Pay-as-you-go- oder pauschaler monatlicher Abrechnung sowie einen Pool von 97M+ IPs, der für langfristige Verfügbarkeit ausgelegt ist.
Dieses Tutorial zeigt Ihnen, wie Sie ProxyScrape-Proxies in ein Scrapy-Projekt integrieren. Sie lernen, Authentifizierung zu konfigurieren, Proxies pro Anfrage zu rotieren und häufige Fehler zu behandeln. Der Ansatz funktioniert unter Windows, macOS und Linux.
Voraussetzungen
- Python 3.8 oder neuer installiert.
- Scrapy installiert (
pip install scrapy). - Ein ProxyScrape-Konto mit Residential- oder Datacenter-Proxies. Sie können sich für einen Plan anmelden oder Pay-as-you-go nutzen.
- Ihre Proxy-Anmeldedaten: Host, Port, Benutzername und Passwort aus dem ProxyScrape-Dashboard.
Proxy-Authentifizierung in Scrapy verstehen
ProxyScrape verwendet Benutzername/Passwort-Authentifizierung. In Scrapy übergeben Sie die Proxy-URL im proxy-Request-Meta-Schlüssel. Das Format ist:
- HTTP/HTTPS:
http://username:password@host:port - SOCKS5:
socks5://username:password@host:port
Scrapy unterstützt HTTP- und HTTPS-Proxies nativ. Für SOCKS5 benötigen Sie ein zusätzliches Paket wie scrapy-socks.
Schritt 1: Scrapy installieren und ein Projekt erstellen
Öffnen Sie ein Terminal und führen Sie aus:
pip install scrapy
scrapy startproject proxyscrape_scrapy
cd proxyscrape_scrapy
Dies erstellt ein neues Scrapy-Projekt mit einem Standard-Spider-Verzeichnis.
Schritt 2: Ihre Proxy-Anmeldedaten von ProxyScrape abrufen
Melden Sie sich in Ihrem ProxyScrape-Dashboard an und erstellen Sie eine Proxy-Liste. Sie erhalten einen Host, Port, Benutzernamen und ein Passwort. Für Residential-Proxies erhalten Sie möglicherweise einen Gateway-Host, der automatisch rotiert, oder eine Liste von Endpunkten. Für Datacenter-Proxies erhalten Sie normalerweise eine feste IP und einen Port.
Beispiel-Anmeldedaten:
- Host:
proxy.proxyscrape.com - Port:
8080 - Benutzername:
user123 - Passwort:
pass456
Ihre Proxy-URL lautet: http://user123:[email protected]:8080
Wenn Ihr Passwort Sonderzeichen enthält, URL-kodieren Sie diese (z. B. wird @ zu %40).
Schritt 3: Einen einfachen Proxy in einem Spider konfigurieren
Erstellen Sie einen einfachen Spider, der Ihre IP-Adresse über den Proxy prüft. In proxyscrape_scrapy/spiders/example.py:
import scrapy
class ExampleSpider(scrapy.Spider):
name = 'example'
start_urls = ['https://httpbin.org/ip']
def start_requests(self):
proxy = 'http://user123:[email protected]:8080'
for url in self.start_urls:
yield scrapy.Request(
url,
meta={'proxy': proxy},
callback=self.parse
)
def parse(self, response):
yield {'ip': response.text}
Führen Sie den Spider aus:
scrapy crawl example -O output.json
Die Ausgabe zeigt die IP-Adresse, wie sie von der Zielwebsite gesehen wird. Wenn sie mit Ihrer Proxy-IP übereinstimmt, funktioniert das Setup.
Schritt 4: Eine rotierende Proxy-Middleware implementieren
Das Rotieren von Proxies pro Anfrage verbessert die Anonymität und verringert die Wahrscheinlichkeit von Blockierungen. Erstellen Sie eine Middleware in proxyscrape_scrapy/middlewares.py:
import random
from scrapy import signals
class ProxyRotationMiddleware:
def __init__(self, proxies):
self.proxies = proxies
@classmethod
def from_crawler(cls, crawler):
return cls(crawler.settings.getlist('PROXY_LIST'))
def process_request(self, request, spider):
proxy = random.choice(self.proxies)
request.meta['proxy'] = proxy
spider.logger.debug(f'Using proxy: {proxy}')
Aktivieren Sie die Middleware und definieren Sie Ihre Proxy-Liste in settings.py:
DOWNLOADER_MIDDLEWARES = {
'proxyscrape_scrapy.middlewares.ProxyRotationMiddleware': 543,
}
PROXY_LIST = [
'http://user1:pass1@host1:port1',
'http://user2:pass2@host2:port2',
'http://user3:pass3@host3:port3',
]
Jetzt verwendet jede Anfrage einen zufälligen Proxy aus der Liste. Sie können die Liste mit mehreren ProxyScrape-Endpunkten füllen oder deren rotierendes Gateway verwenden (ein Endpunkt, der automatisch rotiert).
Schritt 5: SOCKS5-Proxies behandeln (optional)
Scrapy unterstützt SOCKS5 nicht nativ. Installieren Sie scrapy-socks:
pip install scrapy-socks
Fügen Sie die SOCKS5-Middleware zu settings.py hinzu:
DOWNLOADER_MIDDLEWARES = {
'scrapy_socks.Socks5DownloaderMiddleware': 543,
}
Setzen Sie dann den Proxy in den Request-Meta als socks5://user:pass@host:port. Beachten Sie, dass Sie nicht sowohl die Rotations-Middleware als auch scrapy-socks gleichzeitig ohne benutzerdefinierte Logik verwenden können. Für die meisten Anwendungsfälle sind HTTP-Proxies einfacher und ausreichend.
Schritt 6: Rotation testen und überprüfen
Führen Sie Ihren Spider aus und überprüfen Sie die Ausgabe:
scrapy crawl example -O output.json
Untersuchen Sie output.json. Wenn Sie über Anfragen hinweg unterschiedliche IP-Adressen sehen, funktioniert die Rotation. Sie können auch eine Verzögerung zwischen Anfragen hinzufügen, um höflich zu sein:
DOWNLOAD_DELAY = 2
Fehlerbehebung
- 407 Proxy Authentication Required: Überprüfen Sie Ihren Benutzernamen und Ihr Passwort. Stellen Sie sicher, dass sie URL-kodiert sind. Vergewissern Sie sich, dass Ihr ProxyScrape-Plan aktiv ist.
- Connection refused oder Timeout: Bestätigen Sie Host und Port. Überprüfen Sie Ihre Firewall oder VPN. Versuchen Sie einen anderen Proxy-Endpunkt.
- Häufige Blockierungen: Wechseln Sie zu Residential-Proxies, erhöhen Sie
DOWNLOAD_DELAYund aktivieren Sie die Rotation. Datacenter-Proxies werden auf strengen Websites eher blockiert. - SOCKS5-Fehler: Stellen Sie sicher, dass
scrapy-socksinstalliert und konfiguriert ist. Wenn Importfehler auftreten, installieren Sie das Paket neu. - SSL-Fehler: Fügen Sie
DOWNLOAD_HANDLERShinzu oder verwenden Siehttpsin der Proxy-URL, wenn die Zielwebsite dies erfordert.
Den richtigen Proxy-Typ für Scrapy wählen
| Proxy-Typ | Am besten für | Hinweise |
|---|---|---|
| Residential | Scraping von Websites mit Anti-Bot-Schutz | Hohe Anonymität, großer Pool, langsamer |
| Datacenter | Hochgeschwindigkeits-Scraping weniger geschützter Websites | Schneller, günstiger, leichter zu blockieren |
| Mobile | Scraping mobilspezifischer Inhalte oder Apps | Selten blockiert, höhere Kosten |
ProxyScrape bietet alle drei Typen mit flexibler Abrechnung. Beginnen Sie bei den meisten Scraping-Aufgaben mit Residential.
Zusammenfassung
Sie haben gelernt, wie Sie ProxyScrape-Proxies in Scrapy integrieren: Scrapy installieren, Anmeldedaten erhalten, einen einfachen Proxy konfigurieren, eine Rotations-Middleware erstellen und optional SOCKS5 verwenden. Testen Sie Ihr Setup und passen Sie Rotation und Verzögerungen an, um Blockierungen zu vermeiden. Die zuverlässigen Residential- und Datacenter-Proxies von ProxyScrape mit 97M+ IPs und langfristiger Verfügbarkeit machen sie zu einer soliden Wahl für Python-Scraping-Projekte.