Как я написал многопоточный парсер на Python для сбора GEO-данных с международной автопартнерки: 18 000 точек, 8 потоков и 40 RPS

Автор делится кейсом по созданию кастомного Python-парсера для сбора GEO-данных с сайта международной автопартнерки (аренда авто). Основная задача — выгрузить актуальную базу точек выдачи с координатами по всему миру, несмотря на ограничения API и сложности парсинга.

Ключевые трудности:

  • Сайт возвращает не более 10 объектов за раз, требует CSRF-токен и строгую логику обхода (country → region → city → location), иначе выдаёт пустые ответы или банит.
  • Пришлось реализовать многопоточность (до 8 потоков и прокси), обход префиксами (BFS), автоматическую дедупликацию и постоянные бэкапы состояния. Использовалась архитектура двух очередей для обработки данных и записи в файл.
  • Изначально скрипт работал 18 часов в однопоточном режиме, но после оптимизации (многопоток + прокси) — ускорился до 35–40 минут при 40 RPS на API.
  • В процессе было собрано ~18 000 уникальных точек, обработано множество ошибок и реализованы решения для обхода лимитов, защиты от падений, восстановления после сбоев и live-телеметрии через tqdm и rich.

Результат — универсальный парсер, который можно адаптировать под любые задачи парсинга с подобной структурой API, а также ценный разбор типовых проблем: лимитов, архитектуры парсера, очередей, многопоточности, прокси и устойчивости.

← Назад в лентуЧитать оригинал →
✈️ Подписывайтесь на мой Telegram-канал — там еще больше интересного про AdTech, MarTech, AI и многое другое!