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