Paano Mag-set Up ng Rotating Proxies sa Scrapy
Ang built-in HttpProxyMiddleware ng Scrapy ay nagbabasa ng proxy mula sa request.meta. Sa isang rotating gateway, nagtatakda ka ng isang URL at bawat request ay nakakakuha pa rin ng bagong IP.
Mga Hakbang
- Panatilihing naka-enable ang HttpProxyMiddleware (ito ay naka-on bilang default)
- Itakda ang meta={"proxy": url} sa bawat request, o sa start_requests
- Ilagay ang username at password sa proxy URL
- Bawasan ang CONCURRENT_REQUESTS_PER_DOMAIN kung may rate limit pa rin ang site
Halimbawa ng code
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}Palitan ang USERNAME at PASSWORD ng proxy login mula sa Proxies page ng console. Ang port 10000 ay residential HTTP; tingnan ang mga port ng bawat produkto sa ibaba.
Mga Tip
- I-off ang IMAGES_ENABLED at iwasan ang media downloads para makatipid ng GB
- Gamitin ang DOWNLOAD_TIMEOUT 30 at RETRY_TIMES 3 para sa steady na pagtakbo
Mga karaniwang tanong
Kailangan ko ba ng rotation middleware?
Hindi. Ang gateway ang nagro-rotate para sa iyo; isang proxy URL lang ay sapat na.