Scrapy में रोटेटिंग प्रॉक्सी कैसे सेट अप करें
Scrapy का बिल्ट-इन HttpProxyMiddleware request.meta से प्रॉक्सी पढ़ता है। रोटेटिंग गेटवे के साथ आप एक URL सेट करते हैं और हर रिक्वेस्ट को अभी भी एक नया IP मिलता है।
चरण
- HttpProxyMiddleware सक्षम रखें (यह डिफ़ॉल्ट रूप से चालू है)
- प्रत्येक रिक्वेस्ट पर meta={"proxy": url} सेट करें, या start_requests में
- प्रॉक्सी URL में यूजरनेम और पासवर्ड डालें
- अगर साइट अभी भी रेट लिमिट करती है तो 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 काफी है।