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

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

Описание

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

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

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

Решение

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

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

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

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

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

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

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

Результат

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

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

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

Все проекты →
Дизайн и Брендинг Флаер А5 и буклет из сложенного А4 для сети автосервисов - что делать сразу после аварии
Флаер А5 и буклет из сложенного А4 для сети автосервисов - что делать сразу после аварии
10
Веб-разработка и IT Обновление CMS живого сайта с версии 2017 года, с копией и постраничной сверкой
Обновление CMS живого сайта с версии 2017 года, с копией и постраничной сверкой
6
Веб-разработка и IT Магазин электроники на 800 тысяч товаров - товарные фиды, фильтр по характеристикам, ускорение
Магазин электроники на 800 тысяч товаров - товарные фиды, фильтр по характеристикам, ускорение
4
Инженерия и Проектирование Ворота трансформаторной подстанции: чертёж КМ с фасадом, разрезами и спецификацией металла
Ворота трансформаторной подстанции: чертёж КМ с фасадом, разрезами и спецификацией металла
7