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

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

Прокси в коде: как выбирать следующий адрес при сборе

11 ответов · 922 просмотров
знак участника proxyled
proxyledЗнаток
  • сообщений 1 620
  • на форуме 6 мес
Код и программные интерфейсы

Проверял на маленьком объёме, на большом всё поменялось.

Даю всё, что есть, вдруг зацепитесь за деталь.

На тысяче запросов всё ровно, на ста тысячах начинается расхождение. Питон, асинхронный сбор, одновременно держу около двухсот задач.

Хочется услышать цифры от практиков.

держу два поставщика, чтобы спать
знак участника Светлана Бор
Светлана БорНовичок
  • сообщений 205
  • на форуме 1 года
proxyled писал: Прокси в коде: как выбирать следующий адрес …

У нас похожая история была весной.

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

знак участника prosmotr_logov
prosmotr_logovВетеран
  • сообщений 3 040
  • на форуме 1 мес

Проверьте, что ответ полный.

знак участника Останин
ОстанинУчастник
  • сообщений 1 105
  • на форуме 6 мес

Был случай, когда всё сошлось только на третий день разбора.

Сессия должна создаваться один раз и жить весь прогон. Новая сессия на каждый запрос съедает время на установку соединения и путает настройки.

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)
знак участника Астахов
АстаховУчастник
  • сообщений 1 150
  • на форуме 6 мес

Разнесите нагрузку по времени.

знак участника sbor_i_svod
sbor_i_svodЗнаток
  • сообщений 1 520
  • на форуме 5 мес

Тот же вывод, только я шёл к нему дольше.

Структуру ответа проверяйте на каждом разборе. Площадки меняют её без предупреждения, и молчаливая потеря полей самая опасная.

Если поможет, напишите здесь же, пригодится следующим.

знак участника Ким Р.
Ким Р.Новичок
  • сообщений 214
  • на форуме 1 года
proxyled писал: Прокси в коде: как выбирать следующий адрес …

Сначала делал так же, потом переделал всё.

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

Слежу за темой.

знак участника Данилов К.
Данилов К.Участник
  • сообщений 1 245
  • на форуме 8 мес

Осторожнее с обобщением, случаи бывают разные.

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

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

знак участника retry_backoff
retry_backoffЗнаток
  • сообщений 2 710
  • на форуме 2 мес

Расскажу, чем закончилось у меня.

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

знак участника Барсов
БарсовУчастник
  • сообщений 1 420
  • на форуме 8 мес
proxyled писал: Прокси в коде: как выбирать следующий адрес …

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

Какие паузы между запросами?

знак участника Валерия Гонт
Валерия ГонтНовичок
  • сообщений 268
  • на форуме 1 года

Уточню, иначе можно уйти не в ту сторону.

Тестируйте сборщик на сохранённых страницах. Гонять живую площадку ради отладки расточительно.

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)
знак участника Кравчук
КравчукЗнаток
  • сообщений 1 840
  • на форуме 4 мес

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

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

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

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