Дмитрий Гапонов › Nautisss
Сайты руками, боты и парсеры на Python, чертежи в AutoCAD
Рейтинг
16 250
№ 60 в каталоге
Отзывы
Профессионализм
10/10
Коммуникация
10 /10
На сайте с
2025 года
Юридический статус
Самозанятый
Безопасная сделка
Деньги списываются после приёмки

Сбор юзернеймов из комментариев соцсети по ключевым словам с выгрузкой в Google-таблицу

Описание

Заказчик отбирает аудиторию по тому, что люди пишут в комментариях под постами. Написал нужное слово - значит в теме. Собирать такое руками под десятком публикаций бессмысленно, а ему нужен поток.

Нужен был сборщик, который держит под наблюдением последние публикации профиля, раз в час забирает свежие комментарии, отсеивает по семи ключевым словам и дописывает юзернейм в Google-таблицу без повторов, с колонками про пост, слово и время.

Доступов к профилю заказчик давать не собирался и по ходу разговора сказал главное - настоящая задача это профили конкурентов, куда официальный интерфейс площадки не пускает в принципе. Это сразу закрыло лёгкий путь и определило всё остальное.

Решение

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

Дальше пошли грабли, каждая стоила отдельной проверки.

Признак «есть ещё комментарии» врёт. Приходит «нет» на первой же странице, хотя под постом 225 комментариев. Верить можно только курсору, и его надо кодировать в адрес, потому что это кусок JSON со скобками и кавычками. До правки скрипт брал четырнадцать комментариев из двухсот двадцати пяти.

Ответы в ветках лежат отдельным запросом. Из четырнадцати корневых комментариев десять имели ветки, и без них терялась половина людей. После правки стало 214 из 225.

Поиск подстроки по основе слова даёт мусор. «Стек» ловит «стеклянная банка» и «стекает», «бад» ловит «бадью» и «бадминтон», «разбор» ловит «разборчивый». Для блога про еду и добавки это был бы каждый второй ложный результат. Переделал на формы слов, а проверку фильтра встроил в сам скрипт отдельным ключом, чтобы её можно было прогнать без сети.

Каждое подключение к отладочному порту браузера поднимает окно с разрешением, а скрипт цеплялся дважды за запуск. Свёл к одному подключению, и часовой цикл теперь держит сокет открытым вместо переподключения каждый час.

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

Результат

Первый проход по десяти публикациям разобрал 1 370 комментариев вместе с ветками и дал 363 уникальных юзернейма по ключам. Разбивка по словам сразу показала главное - основную массу дают два поста, где блогер сам просил написать слово в комментарии, то есть ровно то, за чем заказчик и пришёл. Таблица отдана ссылкой на чтение, проверил её запросом без входа. Сборщик крутится раз в час и дописывает новых.

Оценили проект:

Другие проекты

Все проекты →
Инженерия и Проектирование Насосная станция со шкафом управления и навес: разрез, план, обвязка насосов, рама навеса
Насосная станция со шкафом управления и навес: разрез, план, обвязка насосов, рама навеса
30
Архитектура и Дизайн интерьеров Перенос обмеров квартиры в RemPlanner: план с размерами, вентшахтами и балконом
Перенос обмеров квартиры в RemPlanner: план с размерами, вентшахтами и балконом
23
Веб-разработка и IT Лендинг походного клуба: маршруты по Кавказу, Алтаю и Камчатке с подбором группы под человека
Лендинг походного клуба: маршруты по Кавказу, Алтаю и Камчатке с подбором группы под человека
22
Веб-разработка и IT База 1500 заведений США и Европы с проверенными почтами для B2B-рассылки
База 1500 заведений США и Европы с проверенными почтами для B2B-рассылки
22