Заказчику требовался инструмент для автоматизированного поиска и сбора публичных данных о пользователях Facebook по имени и фамилии. Задача включала два уровня парсинга:
Массовый сбор базовой информации по всем найденным профилям (ссылка, аватар, количество подписчиков, место работы и учёбы).
Глубокий парсинг динамических превью-карточек, которые подгружаются только при наведении курсора на имя пользователя.
Основная сложность — структура Facebook использует обфусцированные, повторяющиеся CSS-классы и многоуровневую защиту от автоматизации, что делает стандартные парсеры неэффективными.
Решение
• Разработала модульную архитектуру парсера на Python: отдельный модуль для поиска пользователей, отдельный — для извлечения данных из динамических карточек.
• Реализовала обход защиты от автоматизации: эмуляция поведения реального пользователя, ротация user-agent, использование резидентных прокси, маскировка признаков Selenium/Playwright.
• Для работы с динамическим контентом применила подход на основе JavaScript-инъекций: эмуляция события mouseover, ожидание подгрузки карточки через MutationObserver, извлечение данных из временно появляющихся DOM-элементов.
• Решила проблему обфусцированных классов: вместо селекторов по классам использовала поиск по атрибутам data-*, относительным XPath, текстовым меткам и иерархии элементов.
• Настроила экспорт данных в структурированный JSON/CSV с дедупликацией профилей и логированием ошибок для отладки.