Scrapy'de Dönen Proxyler Nasıl Ayarlanır
Scrapy'nin yerleşik HttpProxyMiddleware'i proxy'yi request.meta'dan okur. Dönen bir gateway ile bir URL ayarlarsınız ve her istek yine yeni bir IP alır.
Adımlar
- HttpProxyMiddleware'i etkin tutun (varsayılan olarak açıktır)
- Her istekte meta={"proxy": url} ayarlayın veya start_requests'te ayarlayın
- Proxy URL'sine kullanıcı adı ve şifreyi ekleyin
- Bir site hız sınırlaması yapıyorsa CONCURRENT_REQUESTS_PER_DOMAIN'ı düşürün
Örnek 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}USERNAME ve PASSWORD'u konsolun Proxyler sayfasındaki proxy giriş bilgileriyle değiştirin. Port 10000 residential HTTP'dir; her ürünün portlarını aşağıda görün.
İpuçları
- IMAGES_ENABLED'i kapatın ve medya indirmelerinden kaçınarak GB tasarrufu yapın
- Kararlı çalışmalar için DOWNLOAD_TIMEOUT 30 ve RETRY_TIMES 3 kullanın
Sık sorulan sorular
Bir rotasyon middleware'ine ihtiyacım var mı?
Hayır. Gateway sizin için rotasyon yapar; bir proxy URL yeterlidir.