позиции · сбор данных · отчёты
реклама IPrazon Network: приватные прокси IPv4 и SOCKS5, пул 12 000 адресов, безлимитный трафик, бесплатный тест до 2 часов

Разделы · Код и программные интерфейсы

Scrapy с ротацией адресов: как правильно раздавать по запросам

5 ответов · 2 514 просмотров
знак участника Лидия В.
Лидия В.Новичок
  • сообщений 190
  • на форуме 1 года
Код и программные интерфейсы

Переписываю старый скрипт и хочу сделать правильно.

Опишу по порядку, что есть и чего не хватает.

Логирую код ответа, время и адрес, по которому шёл запрос. Питон, асинхронный сбор, одновременно держу около двухсот задач. Список адресов читаю из файла и раздаю по кругу.

Scrapy с ротацией адресов: как правильно раздавать по запросам: разбор в цифрах
Scrapy с ротацией адресов: как правильно раздавать по запросам: как это выглядит у меня

Есть мысли, куда копать?

знак участника Марат Илюхин
Марат ИлюхинЗнаток
  • сообщений 2 295
  • на форуме 3 мес
полезный ответ
Лидия В. писал: Scrapy с ротацией адресов: как правильно раз…

Присоединяюсь, схема рабочая.

Пул адресов выносите в отдельную часть кода. Тогда смена поставщика занимает минуту.

Адрес выбирайте по кругу с пропуском тех, что в отказе. Случайный выбор даёт перекос, кому-то достанется втрое больше запросов.

Хороший разбор, добавлю в закладки.

знак участника Женя Кольцов
Женя КольцовУчастник
  • сообщений 1 270
  • на форуме 8 мес

Подтверждаю по своей практике.

Не держите весь список в памяти на больших объёмах. Читайте потоком, пишите пачками.

Повторы делайте с растущей паузой: первая через две секунды, вторая через четыре, третья через восемь. Три попытки достаточно, дальше проблема не в связи.

async with aiohttp.ClientSession() as s:
    for i in range(3):
        try:
            r = await s.get(url, proxy=adres, timeout=30)
            break
        except Exception:
            await asyncio.sleep(2 ** i)
знак участника Наиля Ш.
Наиля Ш.Новичок
  • сообщений 505
  • на форуме 1 года

Прогон падает всегда в одном месте?

Что показывает простой запрос из консоли?

знак участника Юля Радько
Юля РадькоНовичок
  • сообщений 385
  • на форуме 1 года

Начинал с того же, потом переделал.

Ошибки разделяйте по типам. Отказ по сети и отказ площадки требуют разного поведения.

Пул адресов выносите в отдельную часть кода. Тогда смена поставщика занимает минуту.

знак участника Панкратов
ПанкратовУчастник
  • сообщений 745
  • на форуме 10 мес

Разбейте задачу на части.

Ответить в темеПодписаться

Рядом в разделе

Сеометр, форум специалистов по поиску и аналитике ПравилаУчастникиО форумеЛента 2026