So richten Sie rotierende Proxies in Scrapy ein
Scrapys integrierte HttpProxyMiddleware liest den Proxy aus request.meta. Mit einem rotierenden Gateway setzen Sie eine URL und jede Anfrage erhält dennoch eine neue IP.
Schritte
- Lassen Sie HttpProxyMiddleware aktiviert (es ist standardmäßig aktiviert)
- Setzen Sie meta={"proxy": url} für jede Anfrage oder in start_requests
- Benutzername und Passwort in die Proxy-URL einfügen
- CONCURRENT_REQUESTS_PER_DOMAIN verringern, wenn eine Seite weiterhin ratenbegrenzt
Beispielcode
import scrapy
PROXY = "http://USERNAME-cc-gb:PASSWORD@gw.gbproxies.cc:10000"
class PricesSpider(scrapy.Spider):
name = "prices"
start_urls = ["https://example.com/catalog"]
def start_requests(self):
for url in self.start_urls:
yield scrapy.Request(url, meta={"proxy": PROXY})
def parse(self, response):
for href in response.css("a.product::attr(href)").getall():
yield response.follow(href, self.parse_item, meta={"proxy": PROXY})
def parse_item(self, response):
yield {"title": response.css("h1::text").get(), "url": response.url}Ersetzen Sie USERNAME und PASSWORD durch die Proxy-Anmeldedaten von der Proxies-Seite der Konsole. Port 10000 ist Residential HTTP; siehe die Ports jedes Produkts unten.
Tipps
- IMAGES_ENABLED ausschalten und Mediendownloads vermeiden, um GB zu sparen
- DOWNLOAD_TIMEOUT 30 und RETRY_TIMES 3 für stabile Durchläufe einstellen
Häufige Fragen
Brauche ich eine Rotations-Middleware?
Nein. Das Gateway übernimmt die Rotation für Sie; eine Proxy-URL reicht aus.