Jak skonfigurować rotujące proxy w Scrapy
Wbudowane HttpProxyMiddleware Scrapy odczytuje proxy z request.meta. Z rotującą bramą ustawiasz jeden URL, a każde żądanie nadal otrzymuje nowe IP.
Kroki
- Pozostaw HttpProxyMiddleware włączone (jest domyślnie włączone)
- Ustaw meta={"proxy": url} na każdym żądaniu lub w start_requests
- Wprowadź nazwę użytkownika i hasło w adresie URL proxy
- Zmniejsz CONCURRENT_REQUESTS_PER_DOMAIN, jeśli strona nadal ogranicza liczbę żądań
Przykładowy kod
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}Zastąp USERNAME i PASSWORD loginem proxy ze strony Proxies w konsoli. Port 10000 to residential HTTP; zobacz porty każdego produktu poniżej.
Porady
- Wyłącz IMAGES_ENABLED i unikaj pobierania multimediów, aby oszczędzać GB
- Użyj DOWNLOAD_TIMEOUT 30 i RETRY_TIMES 3 dla stabilnego działania
Częste pytania
Czy potrzebuję middleware do rotacji?
Nie. Brama rotuje za Ciebie; wystarczy jeden adres URL proxy.