GBProxies

Як налаштувати ротацію проксі в Scrapy

Вбудований HttpProxyMiddleware у Scrapy читає проксі з 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; див. порти кожного продукту нижче.

Поради

  • Вимкніть IMAGES_ENABLED та уникайте завантаження медіа, щоб зекономити GB
  • Використовуйте DOWNLOAD_TIMEOUT 30 та RETRY_TIMES 3 для стабільної роботи

Поширені запитання

Чи потрібен мені middleware для ротації?

Ні. Шлюз ротує за вас; достатньо одного URL проксі.

Як налаштувати ротацію проксі в Scrapy