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

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

Работа с API площадки против сбора со страниц

12 ответов · 2 499 просмотров
знак участника Симаков
СимаковУчастник
  • сообщений 780
  • на форуме 9 мес
Код и программные интерфейсы

Задача техническая, прошу совета по устройству.

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

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)

Подскажите, где я ошибаюсь.

знак участника Артур Хаким
Артур ХакимНовичок
  • сообщений 455
  • на форуме 1 года
полезный ответ
Симаков писал: Работа с API площадки против сбора со страниц

Разбейте прогон на части, станет ровнее.

знак участника crawlbox
crawlboxЗнаток
  • сообщений 1 860
  • на форуме 4 мес

Уменьшите потоки вдвое и замерьте заново.

знак участника seo_kotel
seo_kotelЗнаток
  • сообщений 2 890
  • на форуме 2 мес
полезный ответ

Пул под такие объёмы держу постоянный. Беру серверные прокси с целыми подсетями, потому что там разброс по подсетям нормальный, а это на съёме важнее скорости.

Держите запас, ровно по расчёту работать не выйдет.

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

Начните с малого объёма и растите постепенно.

знак участника Верещак
ВерещакУчастник
  • сообщений 690
  • на форуме 10 мес
Симаков писал: Работа с API площадки против сбора со страниц

Пришёл к этому не сразу, сначала сделал ошибку.

Состояние прогона храните построчно, а не одним куском в конце. Тогда обрыв на девяностом проценте не стоит вам всего прогона.

Разбор ответа держите отдельно от сбора. Тогда смена разметки не требует перегонять данные заново, достаточно перечитать сохранённое.

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)

Держите нас в курсе.

знак участника batch_run
batch_runЗнаток
  • сообщений 1 790
  • на форуме 4 мес

Осторожнее с этим выводом, он верен не всегда.

Разбор ответа держите отдельно от сбора. Тогда смена разметки не требует перегонять данные заново, достаточно перечитать сохранённое.

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

знак участника Инна Сотник
Инна СотникНовичок
  • сообщений 370
  • на форуме 1 года

Проверял на трёх проектах подряд, картина устойчивая.

Состояние прогона храните построчно, а не одним куском в конце. Тогда обрыв на девяностом проценте не стоит вам всего прогона.

Тема нужная, подписался.

знак участника rankdesk
rankdeskЗнаток
  • сообщений 2 044
  • на форуме 7 мес
Симаков писал: Работа с API площадки против сбора со страниц

А что показывают логи в момент падения?

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

Логи в помощь, без них это гадание.

знак участника Ефим Гладков
Ефим ГладковУчастник
  • сообщений 850
  • на форуме 9 мес

Осторожнее с этим выводом, он верен не всегда.

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

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

знак участника Мельник И.
Мельник И.Знаток
  • сообщений 1 655
  • на форуме 3 мес

Осторожнее с этим выводом, он верен не всегда.

Логируйте код ответа, время и адрес. Три поля, и почти любой разбор потом занимает минуты.

знак участника logi_i_grafiki
logi_i_grafikiУчастник
  • сообщений 895
  • на форуме 9 мес

Логи в помощь, без них это гадание.

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

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

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