So verwenden Sie Proxies mit Scrapy: Complete Guide
Erfahren Sie, wie Sie GProxy residential und datacenter proxies mit Scrapy für großflächiges web scraping konfigurieren. Behandelt middleware setup, proxy rotation und error handling.
Voraussetzungen
- ✓Python 3.8+ installiert
- ✓Scrapy 2.x installiert (pip install scrapy)
- ✓GProxy-Konto mit aktivem Proxy-Plan
- ✓Grundlegende Vertrautheit mit Scrapy-Spiders und -Einstellungen
Schritt-für-Schritt-Einrichtung
Scrapy installieren
Installieren Sie Scrapy und erstellen Sie ein neues Projekt
pip install scrapy
scrapy startproject myproject
cd myproject
Proxy in settings.py konfigurieren
Proxy-Einstellungen zur settings.py Ihres Projekts hinzufügen
# settings.py
HTTPPROXY_ENABLED = True
DOWNLOADER_MIDDLEWARES = {
'myproject.middlewares.GProxyMiddleware': 350,
'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 400,
}
Proxy-Middleware erstellen
Erstellen Sie eine benutzerdefinierte Middleware in middlewares.py
class GProxyMiddleware:
def process_request(self, request, spider):
proxy = 'http://USER:PASS@proxy.gproxy.net:1000'
request.meta['proxy'] = proxy
Rotation-Support hinzufügen
Für automatische IP-Rotation verwenden Sie den Backconnect-Endpunkt
class GProxyRotatingMiddleware:
def process_request(self, request, spider):
request.meta['proxy'] = 'http://USER-country-us:PASS@proxy.gproxy.net:1000'
def process_exception(self, request, exception, spider):
return request # retry with new IP
Retry-Einstellungen konfigurieren
Retry-Konfiguration für Zuverlässigkeit hinzufügen
# settings.py
RETRY_ENABLED = True
RETRY_TIMES = 5
RETRY_HTTP_CODES = [403, 407, 429, 500, 502, 503]
DOWNLOAD_TIMEOUT = 30
Spider ausführen
Testen Sie die Proxy-Konfiguration
scrapy crawl myspider -o output.json
Codebeispiele
import scrapy
class ProxySpider(scrapy.Spider):
name = 'proxy_spider'
start_urls = ['https://httpbin.org/ip']
custom_settings = {
'DOWNLOADER_MIDDLEWARES': {
'myproject.middlewares.GProxyMiddleware': 350,
},
'CONCURRENT_REQUESTS': 32,
'DOWNLOAD_DELAY': 0.5,
'DOWNLOAD_TIMEOUT': 30,
}
def parse(self, response):
yield {'ip': response.json()['origin']}
import logging
logger = logging.getLogger(__name__)
class GProxyMiddleware:
PROXY_URL = 'http://USER:PASS@proxy.gproxy.net:1000'
@classmethod
def from_crawler(cls, crawler):
return cls()
def process_request(self, request, spider):
request.meta['proxy'] = self.PROXY_URL
request.headers.pop('Proxy-Authorization', None)
def process_response(self, request, response, spider):
if response.status in [403, 407, 429]:
logger.warning(f'Proxy error {response.status} for {request.url}')
return request
return response
def process_exception(self, request, exception, spider):
logger.error(f'Proxy exception: {exception}')
return request
import scrapy
class GeoSpider(scrapy.Spider):
name = 'geo_spider'
custom_settings = {
'CONCURRENT_REQUESTS': 16,
}
def start_requests(self):
countries = ['us', 'de', 'gb', 'fr', 'jp']
for country in countries:
proxy = f'http://USER-country-{country}:PASS@proxy.gproxy.net:1000'
yield scrapy.Request(
url='https://httpbin.org/ip',
meta={'proxy': proxy},
cb_kwargs={'country': country},
)
def parse(self, response, country):
yield {
'country': country,
'ip': response.json()['origin'],
}
Warum Proxies mit Scrapy verwenden?
Scrapy ist das beliebteste Python Web Scraping Framework, das täglich Millionen von Crawl-Jobs antreibt. Beim Scraping in großem Maßstab werden Sie unweigerlich mit IP-Sperren, CAPTCHAs und Rate Limits konfrontiert. Der Residential proxy Pool von GProxy mit über 10M+ IPs in mehr als 150 Ländern löst diese Herausforderungen, indem er Ihre Exit-IP automatisch rotiert.
Proxy-Authentifizierungsmethoden
GProxy unterstützt zwei Authentifizierungsmethoden mit Scrapy: Benutzername/Passwort-Authentifizierung über die proxy URL und IP-Whitelist-Authentifizierung, bei der Sie die IP Ihres Servers im GProxy Dashboard hinzufügen. Beide funktionieren nahtlos mit der integrierten proxy Unterstützung von Scrapy.
Grundlegende Proxy-Konfiguration
Der einfachste Weg, GProxy Proxies zu Scrapy hinzuzufügen, ist über die settings.py Datei. Setzen Sie die HTTP_PROXY und HTTPS_PROXY Umgebungsvariablen oder konfigurieren Sie diese direkt in den Custom Settings Ihres Spiders. Für rotierende Proxies sollten Sie eine benutzerdefinierte Downloader Middleware verwenden, die pro Request eine neue proxy URL zuweist.
Benutzerdefinierte Proxy-Rotation-Middleware
Für das Scraping in der Produktion bietet eine benutzerdefinierte Middleware die volle Kontrolle über die proxy Zuweisung. Die Middleware fängt jeden Request ab, bevor er gesendet wird, weist einen proxy Endpunkt mit Rotationsparametern zu und verarbeitet proxy-bezogene Fehler wie Timeouts oder 407 Authentifizierungsfehler. Der Backconnect-Endpunkt von GProxy übernimmt die Rotation serverseitig, sodass jede Verbindung über denselben Endpunkt eine andere IP erhält.
Fehlerbehandlung und Retries
Robustes Scraping erfordert eine ordnungsgemäße Fehlerbehandlung. Konfigurieren Sie die Retry-Middleware von Scrapy so, dass sie mit Ihrem proxy Setup zusammenarbeitet: Wiederholen Sie den Vorgang bei den Statuscodes 403, 407, 429 und 503 und legen Sie eine angemessene Anzahl von Retries fest (3-5 Versuche). Die Sticky Sessions von GProxy ermöglichen es Ihnen, bei Bedarf dieselbe IP über Retries hinweg beizubehalten – nützlich für mehrstufige Flows.
Gleichzeitige Requests und Performance
Scrapy zeichnet sich durch gleichzeitiges Scraping aus, und die Infrastruktur von GProxy bewältigt hohe Nebenläufigkeit gut. Beginnen Sie mit CONCURRENT_REQUESTS = 32 und DOWNLOAD_DELAY = 0.5 und passen Sie dies basierend auf dem Verhalten der Zielseite an. Mit GProxy Residential Proxies können Sie in der Regel 50-100 gleichzeitige Requests ohne Probleme ausführen.
Geo-Targeting mit Scrapy
GProxy unterstützt Targeting auf Länder- und Stadtebene. Übergeben Sie das Zielland als Teil Ihrer proxy Anmeldedaten (z. B. user-country-us), um Requests über IPs an diesem Standort zu leiten. Dies ist unerlässlich für das Scraping von Inhalten mit Geo-Restriktionen oder lokalisierten Suchergebnissen.
Anwendungsfälle
E-commerce Preisüberwachung
Scrape Produktpreise über mehrere Einzelhändler hinweg mit geo-targeted Proxys, um lokalisierte Preise zu sehen.
SERP Tracking
Überwachen Sie Suchmaschinen-Rankings von verschiedenen Standorten aus unter Verwendung länderspezifischer residential IPs.
Lead-Generierung
Extrahieren Sie Brancheneinträge und Kontaktdaten in großem Umfang mit rotierenden IPs, um eine Erkennung zu vermeiden.
Content-Aggregation
Sammeln Sie Artikel, Bewertungen und Einträge aus mehreren Quellen mit zuverlässiger Proxy-Rotation.
FAQ
Unterstützt Scrapy SOCKS5 proxies? +
Wie viele gleichzeitige Anfragen kann ich ausführen? +
Kann ich Sticky Sessions mit Scrapy verwenden? +
Wie gehe ich mit CAPTCHAs um? +
Bereit loszulegen?
Starten Sie mit GProxy in Minuten — Residential-Proxies ab $0,85/GB, IPv6 ab $0,03/Proxy, nutzungsbasierte Abrechnung.
