О проекте
Ищем Python-разработчика в команду для создания и поддержки системы сбора данных из открытых источников: сайтов, поисковых сервисов, социальных сетей и т.д.
Предстоит разрабатывать парсинг-сервисы, приводить данные к единому формату и сохранять их в базы данных и файловое хранилище. Планируем работать с более 15 источников и объёмом от 1 млн профилей.
Зарплата: 180 000–230 000 ₽ на руки в месяц, по результатам технического собеседования. Полная занятость, офис.
Что предстоит делать
•Разрабатывать сборщики на Python: получать данные через API и HTTP-запросы, извлекать информацию из HTML, использовать браузерную автоматизацию.
•Собирать доступные сведения о профилях, публикациях и активности, загружать фотографии и другие материалы.
•Проверять и нормализовать данные, обрабатывать пропуски, предотвращать дубли.
•Реализовывать запись и обновление данных в PostgreSQL, связывать записи с файлами в объектном хранилище.
•Сохранять источник и время получения данных, фиксировать изменения при повторном сборе.
•Настраивать регулярные запуски, обработку ошибок и повторные попытки.
•Поддерживать сборщики при изменении источников, писать тесты и добавлять логи для диагностики.
Что важно
•Практический опыт разработки на Python и реализации сборщиков или интеграций с внешними API.
•Понимание HTTP, JSON, HTML, пагинации, таймаутов и ограничений частоты запросов.
•Опыт с requests, HTTPX или aiohttp, а также BeautifulSoup, lxml или Scrapy. Владение всеми библиотеками одновременно не требуется.
•Умение пользоваться DevTools браузера для изучения страниц и сетевых запросов.
•Уверенный базовый SQL: выборки, связи таблиц, вставка и обновление данных. Желателен опыт PostgreSQL.
•Понимание того, как проверять результат сбора и избегать повторных записей.
•Работа с Git, опыт отладки и написания тестов, например на pytest.
•Умение реализовывать согласованные решения, обсуждать вопросы и работать с ревью.
•Playwright или Selenium.
•Асинхронный Python и asyncio.
Будет плюсом
•SQLAlchemy и Alembic.
•Docker, Linux, запуск задач по расписанию.
•Celery, RQ или другие инструменты фоновой обработки.
•S3-совместимые хранилища.
•Опыт длительного сопровождения нескольких источников.