GBProxies

如何在Scrapy中設置輪換Proxy

Scrapy內置的HttpProxyMiddleware從request.meta中讀取proxy。使用輪換網關時,你只需設置一個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頁面上的proxy登錄信息。端口10000是住宅HTTP;請查看下方每個產品的端口。

提示

  • 關閉IMAGES_ENABLED並避免下載媒體以節省GB
  • 設置DOWNLOAD_TIMEOUT為30和RETRY_TIMES為3以保持穩定運行

常見問題

我需要旋轉中間件嗎?

不需要。網關會為您旋轉;一個代理URL就足夠了。

如何在Scrapy中設置輪換Proxy