Как написать парсер vk

Парсер — программа, которая по заданному алгоритму собирает нужную информацию на сайте. Парсеры часто применяют в маркетинговых целях, чтобы собрать базу для таргетированной рекламы или спам рассылки. Наш парсер будет способен формировать базу участников выбранного сообщества, сохранять базы в txt файле, высчитывать процент пересечения двух баз, объединять две базы в одну без повторов, а также будет доступен ввод сохраненной базы из txt файла.

Подготовка

Для взаимодействия с API Вконтакте мы будем использовать модуль vk. Установить vk можно через pip с помощью команды: pip install vk

Также, чтобы получить сервисный ключ доступа, нам потребуется создать приложение на сайте Вконтакте. Это можно сделать по этой ссылке.

Пишем код

Первым делом давайте импортируем модуль vk, обозначим имена наших будущих функций и напишем авторизацию.

Конструкция if __name__ == «__main__»: нужна чтобы описать, что будет происходить, если запустить эту программу как основную. Другими словами, если импортировать эту программу в другой код как модуль, то все описанные действия в этой конструкции исполняться не будут.

Сделал парсер страниц ВК! «Спарси» своего друга за 10 секунд

Теперь приступим к созданию наших функций. Для того, чтобы собрать данные об участниках группы, мы будем использовать метод API groups.getMembers. Основной параметр этого метода group_id — это id(только цифры) или короткое имя сообщества, эту информацию можно найти в URL сообщества. Параметр v — это версия API, посмотреть актуальную можно тут. Метод возвращает нам данные в виде словаря. “count” — кол-во подписчиков, “items” — список id’шников.

Проблема заключается в том, что этот метод может возвратить нам максимум 1000 id’шников. Но благодаря параметру offset, который отвечает за смещение от начала полного списка участников(по умолчанию 0), и циклу for, мы можем получить список всех участников сообщества.

Теперь напишем функции сохранения базы в файл и чтения базы из файла.

Далее реализуем две функции, использующие множества.

Весь основной функционал готов, осталось лишь дописать в конструкцию if __name__ == «__main__»: какие функции мы хотим применить.

Например, давайте найдем пересечение аудиторий двух групп про кино, объединим их аудиторию без повторов и сохраним в txt файл.
1. https://vk.com/hdkinomania
2. https://vk.com/bobfilm

Код будет выглядеть вот так:

Пересечение аудиторий у этих двух сообществ — 1,65%

На этом все! При желании, немного изменив код, можно собирать больше информации о пользователях.

Парсинг данных через api vk и google sheets api на python

Появилась потребность собирать статистику постов из группы в контакте и затем проанализировать реакции подписчиков на конкретные посты. Если переформулировать на выходе стоит задача с заданной периодичностью снимать показания статистики постов в вк и сохранять их.

Я не профессиональный программист и не претендую, поэтому решил сделать все довольно просто. При помощи api VK забирать посты из группы, собираю нужный мне датафрейм и записываю данные в гугл таблицу, так же через api.

Еще по теме:  Описание для ВК на страницу для девушек на английском с переводом

Парсинг групп и пользователей Telegram, VKontakte, Twitter и других соц.сетей в одном видео

Может быть это и не самое оптимальное решение,

Настраиваем API VK

В этом блоке мы хотим собрать статистику постов из группы vk.

Для начала работы нам нужен user_token из vk. Мне понравилась видеоинструкция здесь, коротко и по делу.

Токен держим в секрете. Переходим в https://dev.vk.com изучаем документацию API.

Прямо на сайте документации можем попробовать дернуть запрос.

Для этого нам нужно access_token, domain, count, v, filter.

access_token – получили на прошлом шаге. domain – название группы вы увидите в url название группы например https://vk.com/adminsclub. count – количество постов которые можем дернуть. v – версия api. filter – хотим получить только посты от группы устанавливаем owner.

vk можно попробовать, как работает сам метод.

Прописываем логику сбора

Импортируем библиотеку requests. Дергаем тестовый запрос. Поcле анализа структуры решаю, что мне нужен раздел items

Отдельное поле в статистики количество фотографий для поста, я не нашел.

Через цикл перебираем каждый пост и считаем количество фото, если фотографии нет скрипт ловит ошибку. Обрабатываем ошибку и ставим 0. Собираем новый список с полями id поста и количество фото.

Пишем обработчик. Вызываем pandas

Переводим cловарь в df. Импортируем метод from pandas import json_normalize

Оставляем нужные атрибуты и переводим дату в другой формат.

В переменной post_id запихиваем id наших постов.

Я бы хотел обогатить свою статистику более расширенными измерениями

Из документации по api о которой рассказывал выше подобрал метод status.getPostReach

В методе обнаружил новый аргумент owner_id, его можно найти в настройках группы.

Делаем еще один запрос и новые данные сохраняем в датафрейм df_stat_post

Теперь приступим к сборке объединяем все наши датафреймы, накидываем дополнительные метрики.

Далее наши данные преобразовываем для загрузки в гугл таблицу.

Грузим в google sheet через api

Есть готовые библиотеки для работы с google sheet например pygsheets, но мне было важно поработать с API поэтому легких путей не искал.

Прежде чем загрузить надо настроить наш api прекрасная статья, в который пошагово написано и даст возможность поиграться с листами https://habr.com/ru/post/483302/

После подключения к листу. Находим последнюю заполненную строку.

В моем примере я заполняю последние 10 строк ровно по количеству постов которые я получил из get запроса. Подготавливаем шаблон для запроса, заполняем шаблон данными какие ячейки заполняем и заполняем. Далее выполняем запрос. Готово

После написания этого кода мне требовалось запускать его каждый час и принял решение арендовать сервер, установить туда docker и через crontab запускать.

Name already in use

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Парсер групп Вконтакте

Программа собирает посты и комментарии с социальной сети Вконтакте, отбирает сообщения по ключевым словам нечетким сравнением и проверкой орфографии, сохраняет сообщения в нереляционную базу данных MongoDB. Реализован телеграмм бот для удаленного управления.

Еще по теме:  Как писать столбиком Вконтакте

Windows 11
Python 3.10.5
MongoDB 5.0.9

В Linux Ubuntu и macOS возникли ошибки с библиотекой pyenchant (для проверки орфографии).

Выполните следующие действия

  1. Установите MongoDB (MongoDB Community Server, https://www.mongodb.com/try/download)
  2. Подключитесь к интерфейсу:
  1. Создайте БД с именем ‘vk’:
  1. Создайте коллекцию с именем ‘user’:
  1. Установите все зависимости:
  1. Добавить словарь для поддержки русского языка в pyenchant
    Словари в папке dictionary: ru_RU.aff и ru_RU.dic
    Скопировать в папку со словарями:
    C:UsersusernameAppDataLocalProgramsPythonPython39Libsite-packagesenchantdatamingw64shareenchanthunspell
  2. Создайте свое приложение (Standalone-приложение): https://vk.com/apps?act=manage
    Входные данные для получения токена
    client_id — id приложения
    scope — права доступа (https://dev.vk.com/reference/access-rights)
    Запрос для получения токена:
    https://oauth.vk.com/authorize?client_id=111111redirect_uri=https://oauth.vk.com/blank.htmlresponse_type=tokenhttps://gshimki.ru/razgovor/24/kak-parsit-vk-python» target=»_blank»]gshimki.ru[/mask_link]

    Пишем простой парсер ВК на Python

    Парсер — программа, которая по заданному алгоритму собирает нужную информацию на сайте. Парсеры часто применяют в маркетинговых целях, чтобы собрать базу для таргетированной рекламы или спам рассылки. Наш парсер будет способен формировать базу участников выбранного сообщества, сохранять базы в txt файле, высчитывать процент пересечения двух баз, объединять две базы в одну без повторов, а также будет доступен ввод сохраненной базы из txt файла.

    Подготовка

    Для взаимодействия с API Вконтакте мы будем использовать модуль vk. Установить vk можно через pip с помощью команды: pip install vk

    Также, чтобы получить сервисный ключ доступа, нам потребуется создать приложение на сайте Вконтакте. Это можно сделать по этой ссылке.

    Пишем код

    Первым делом давайте импортируем модуль vk, обозначим имена наших будущих функций и напишем авторизацию.

    Проблема заключается в том, что этот метод может возвратить нам максимум 1000 id’шников. Но благодаря параметру offset, который отвечает за смещение от начала полного списка участников(по умолчанию 0), и циклу for, мы можем получить список всех участников сообщества.

    На этом все! При желании, немного изменив код, можно собирать больше информации о пользователях.

    Источник: medium.com

    Парсер лайков из ВКонтакте

    Парсер лайков ВКонтакте

    В данном уроке по PHP парсерам обойдёмся без PHP. Будем собирать ID пользователей, лайкнувших заданный товар. Для этой цели воспользуемся API социальной сети ВКонтакте.

    Можно, конечно, пойти стандартным путём и парсить ВК с помощью PHP и cURL, но когда у сайта есть рабочее API, то удобнее пользоваться им. В частности, в ВК можно получить через встроенное API самые разные данные, но при этом есть ограничение на частоту запросов.

    Для успешного старта работы с API VK стоит изучит официальную документацию и скудные примеры. Для себя выбрал вариант работы по Open API. Кстати, запросы к API VK отправляются по технологии AJAX, а ответы приходят в формате JSON, не зря мы ранее знакомились с этой схемой данных.

    Чтобы можно было работать с API социальной сети нужно в своём скрипте подключить JS библиотеку //vk.com/js/api/openapi.js и создать Standalone приложение.

    Пример приложения ВК

    Далее в настройках видим ID приложения, а также надо задать домен и адрес сайта с нашим парсером.

    Настройки приложения ВК

    Теперь мы готовы к написанию парсера лайков. В качестве подопытного выберем маркет с товарами бренда Кухни Мария.

    Маркет ВК Кухни Мария

    Парсер лайков во ВКонтакте без PHP

    Код файла index.html.

    Парсер информации из ВКонтакте .wrapper < max-width: 600px; margin: 0 auto; >h1, p < text-align: center; >.action_form < max-width: 560px; margin: 0 auto; >.action_form input, .action_form textarea < width: 100%; >.action_form textarea < min-height: 100px; >input[type=»text»] < font-size: 1em; min-height: 36px; box-sizing: border-box; >input[type=»submit»], input[type=»button»] < padding: 8px 12px; margin: 12px auto; font-size: 1.2em; font-weight: 400; line-height: 1.2em; text-decoration: none; display: inline-block; cursor: pointer; border: 2px solid #007700; border-radius: 2px; background-color: transparent; color: #007700; >input[type=»submit»]:hover, input[type=»button»]:hover < background-color: #009900; color: #fff; >.result < border: 1px dotted #000; width: 100%; height: auto; overflow-y: auto; margin: 0px auto; padding: 10px; >.copyright < text-align: center; >.copyright a < color: #000; >.copyright a:hover < text-decoration: none; >.red < color: #770000; >.green

    Парсер лайков на товары из ВК

    Собираем список ID пользователей, которые лайкнули заданный товар.

    © Идея и реализация — ПЧ // 28.05.2017 г.

    jQuery(document).ready(function($) < $(‘#btn_action_likes’).click(function() < function get_vk_market_likes(vk_owner_id, vk_post_id, vk_post_type) < // Инициализация VK API VK.init(< apiId: ID приложения >); $(‘#result’).html(‘

    Загрузка данных .

    ‘); VK.Api.call(‘likes.getList’, , function(data) < if(data.response) < $(‘#result’).html(»); data.response.items.forEach(function(item, i, arr) < $(‘#result’).html($(‘#result’).html() + «

    » + item + «

    «).hide().fadeIn(‘slow’); >); > else < $(‘#errors_block’).html($(‘.app_alert’).html() + ‘

    ‘ + data.error.error_code + ‘// ‘ + data.error.error_msg + ‘

    ‘); > >); > var vk_url = $(«#vk_url»).val(); if(vk_url) < $(‘#result’).html(»); $(‘#errors_block’).html(»); vk_url = vk_url.slice(vk_url.indexOf(«w=product») + 9).split(‘_’); var vk_owner_id = parseInt(vk_url[0]); var vk_post_id = parseInt(vk_url[1]); var vk_post_type = ‘market’; get_vk_market_likes(vk_owner_id, vk_post_id, vk_post_type); >else < $(‘#errors_block’).html($(‘#errors_block’).html() + «

    Введите адрес страницы с товаром

    «).hide().fadeIn(‘slow’); > return true; >); >);

    При запуске парсера не забудьте в настройке apiId: ID приложения поставить ID своего приложения.

    Алгоритм работы парсера лайков следующий. Мы задаём адрес карточки нужного нам товара. Скрипт из URL достаёт ID маркета и товара, далее делает запрос к API ВК с целью получить список ID пользователей, которые поставили лайки заданному проекту кухни. Для получения информации по лайкам используется метод likes.getList.

    Затем список ID пользователей выводится на экран. Потом полученную информацию можно использовать для настройки таргетированной рекламы в социальной сети.

    Пример простого парсера лайков

    Особенности работы с API VK

    Запросы к API VK можно делать только с заданного в приложении домена. Если попробовать сделать AJAX запрос с другого сайта, то вывалится ошибка ограничения кроссдоменных запроосов.

    Ошибка запроса API VK с чужого домена

    В примере приведён очень простой вариант парсера. В более сложных случаях нам бывает нужно, например, вначале спарсить категории (альбомы) магазина, а потом товары и лайки. В таких случаях следует делать запросы последовательно и вложенными друг в друга, чтобы не было проблем с асинхронной подгрузкой данных.

    Также обратите внимание на то, что число возращаемых методом API результатов ограничено 1000. Но нередко бывают записи или товары, которые собирают по несколько тысяч лайков или репостов. В этом случае надо пользоваться рекурсией и вызывать методы со смещением, параметр offset.

    Парсер лайков из ВК написан без применения PHP, в скрипте использовался только JS и открытое API социальной сети. После небольших доработок этот же парсер можно применять для сбора информации по лайкам для постов, фото, видео и пр.

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

    Источник: seorubl.ru

Рейтинг
( Пока оценок нет )
Загрузка ...