GBProxies

Scrapy में रोटेटिंग प्रॉक्सी कैसे सेट अप करें

Scrapy का बिल्ट-इन HttpProxyMiddleware request.meta से प्रॉक्सी पढ़ता है। रोटेटिंग गेटवे के साथ आप एक URL सेट करते हैं और हर रिक्वेस्ट को अभी भी एक नया IP मिलता है।

चरण

  1. HttpProxyMiddleware सक्षम रखें (यह डिफ़ॉल्ट रूप से चालू है)
  2. प्रत्येक रिक्वेस्ट पर meta={"proxy": url} सेट करें, या start_requests में
  3. प्रॉक्सी URL में यूजरनेम और पासवर्ड डालें
  4. अगर साइट अभी भी रेट लिमिट करती है तो CONCURRENT_REQUESTS_PER_DOMAIN कम करें

उदाहरण कोड

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 और PASSWORD को कंसोल के Proxies पेज से प्रॉक्सी लॉगिन से बदलें। पोर्ट 10000 रेजिडेंशियल HTTP है; नीचे हर प्रोडक्ट के पोर्ट देखें।

टिप्स

  • GB बचाने के लिए IMAGES_ENABLED बंद करें और मीडिया डाउनलोड से बचें
  • स्टेडी रन के लिए DOWNLOAD_TIMEOUT 30 और RETRY_TIMES 3 सेट करें

सामान्य प्रश्न

क्या मुझे रोटेशन मिडलवेयर चाहिए?

नहीं। गेटवे आपके लिए रोटेट करता है; एक प्रॉक्सी URL काफी है।

Scrapy में रोटेटिंग प्रॉक्सी कैसे सेट अप करें