Как получить id пользователя vk api python

Сбор данных с помощью api вконтакте — разработка на

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

10 032 просмотров

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

Важно: мы заметили, что при поиске по ФИ ДР Вконтакте выдаст подходящих пользователей, даже если их дата рождения скрыта. Это можно было использовать, только нужно обеспечить связь с данными поискового запроса. Для работы с API VK мы решили использовать Python с библиотекой vk_api (установка: pip install vk_api). Итого нам потребуются 2 библиотеки:

import pandas as pd

АВТОРИЗАЦИЯ В АККАУНТЕ VK ЧЕРЕЗ PYTHON


import vk_api

Далее – импорт входных данных в формате ID, Имя, Фамилия, Отчество (можно оставить пустым, так как Вконтакте отчество отсутствует), День рождения, Месяц рождения, Год рождения. Пример: (0,Пет, Петрови, ,1,1,1950)

data = pd.read_csv(‘in.txt’, encoding = ‘cp1251’)

Затем авторизация и получение токена VK:

vk_session = vk_api.VkApi(‘ 79XXXXXXXXXX’, ‘password’)
vk_session.auth()
vk = vk_session.get_api()

После этого мы можем начинать выполнять запросы к API.

Разберем для примера использование метода users.search и сохранение полученных результатов. Основные параметры это q – строка поискового запроса, так же для поиска нам понадобятся birth_day, birth_month, birth_year, count – количество результатов (поставим максимум – 1000), fields – список дополнительных полей, в примере укажем ‘bdate, city’. Результат будет возвращен в виде словаря Python. Разберем подробно:

t=<> #создаем словарь для хранения данных, получаемых от API VK
for j in range(0, len(data)): #запускаем поиск по массиву
#Далее следует обращение к API с нашими параметрами:
t[j]=vk.users.search(q = data[‘N’][j] ‘ ‘ data[‘F’][j], birth_day = data[‘D’][j], birth_month = data[‘M’][j], birth_year = data[‘Y’][j], count = 1000, fields=’bdate, city’)
for h in (t[j][‘items’]): #Сохраняем результаты поиска в файл”users.txt”
with open(‘users.txt’,’a’) as f1:
f1.write((str(data[‘id’][j]) ‘;’ #ID исходный
str(t[j][‘count’]) ‘;’ #Количество найденных пользователей
str(h[‘id’]) ‘;’ #ID пользователя VK
h[‘last_name’] ‘;’ #Фамилия
h[‘first_name’] ‘;’ #Имя
h.get(‘bdate’,”) ‘;’ #Дата рождения
h.get(‘city’,<>).get(‘title’,”) #У города несколько параметров – нам нужно название: title
‘;n’).encode(‘cp1251’, ‘replace’).decode(‘cp1251’))#Для удаления нестандартных символов, которые могут вызывать ошибки

Еще по теме:  Открыть мою страницу Вконтакте

Далее мы можем в этом же цикле осуществить поиск и сохранение ID друзей пользователя, за это отвечает метод friends.get. Если друзей нет (или скрыты), метод вернет ошибку, поэтому используем try/except:

Автопостинг ВК | Получение access token, выполнение запроса, извлечение шуток

try:
m=vk.friends.get(user_id = str(h[‘id’]), count = 50000)
for q in m[‘items’]: #Сохраняем ID друзей в файл “friends.txt”
with open(‘friends.txt’,’a’) as f2:
f2.write(str(data[‘id’][j]) ‘;’ str(h[‘id’]) ‘;’ str(q) ‘;n’)
except: #Если друзей нет (или скрыты) пишем в файл 0 для этого ID
with open(‘friends.txt’,’a’) as f2:
f2.write(str(data[‘id’][j]) ‘;’ str(h[‘id’]) ‘;0;n’)

Если мы хотим выполнить большое количество запросов, нужно добавить паузу между ними, например, команда sleep библиотеки time. Без этого учетная запись VK может быть заблокирована. Экспериментальным путем подобраны значения 9 секунд для поиска без друзей и 5 для поиска с друзьями (меньше, т.к. получение и сохранение списка друзей занимает несколько секунд). Производительность при использовании одной учетной записи Вконтакте составляет 8-10 тыс. пользователей в сутки. Полученные результаты сохраняются в файлы users.txt и friends.txt и могут в дальнейшем быть обработаны в БД или средствами Python.

Скрипт проверки пользователя в сообществе вконтакте

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

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

Скрипт одним шагом. HTML, PHP, API.

По сути, обилие кода Вы тут не увидите, да это и не требуется. Но все же, давайте я Вам все объясню. Переменная $community – хранит в себе идентификатор сообщества, переменная $profile – хранит в себе идентификатор пользователя ВКонтакте (в данном случае, официальное сообщество RootHelp и идентификатор моей личной страницы).

Еще по теме:  Как отменить подписку vk donut

Далее с помощью PHP функции file_get_contents получаем содержимое файла в виде строчки (про данную функцию я подробно рассказывал в другом уроке – Как подключить файл и вывести его содержимое ) и отдаем ее функции json_decode , которая принимаем закодированную строку и преобразовывает ее в переменную $answer .

response == 1)< echo»Мой аккаунт «.$profile.» и я уже подписан на новости сообщества!»; > else VK.Widgets.Group(«vk_groups», , 30444828); ?>

После чего создаем условие, в котором при положительном ответе от сервера выдаем, что пользователь подписан на группу, при отрицательном показываем виджет API подписки на группу. Вот и все, скрипт проверки пользователя в сообществе ВКонтакте готов!

Огромное спасибо за ваше внимание! Подписывайтесь, оставляйте свои комментарии, буду рад ответить на любые вопросы!)

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

Как получить id пользователя вк пайтон?

Mors Clamor
Traceback (most recent call last):
File «/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py», line 31, in
start(fakepyfile,mainpyfile)
File «/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py», line 30, in start
exec(open(mainpyfile).read(), __main__.__dict__)
File «», line 36, in
AttributeError: ‘VkBotMessageEvent’ object has no attribute ‘from_id’

Решения вопроса 0
Ответы на вопрос 3
event.message.from_id — здесь ID отправителя
Ответ написан более двух лет назад
Можешь показать как сделать?
Желательно код если можно

for event in longpoll.listen(): if event.type == VkBotEventType.MESSAGE_NEW: user_id = event.message.from_id
import vk_api from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType vk_session = vk_api.VkApi(token = ‘цензура’) longpoll = VkBotLongPoll(vk_session, цензура) def sender(id, text): vk_session.method(‘messages.send’, ) for event in longpoll.listen(): if event.type == VkBotEventType.MESSAGE_NEW: if event.from_chat: msg = event.object.message[‘text’].lower() elif msg == ‘айди’: sender(id, f»)
Ответ написан более двух лет назад
Бот отвечает None
Что не так?

6008570515f8b120992541.jpeg

samperirrrrr,

# -*- coding: utf8 -*- import vk_api from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType token = ‘token tyteq’ vk_session = vk_api.VkApi(token=token) vk = vk_session.get_api() longpoll = VkBotLongPoll(vk_session, ‘ид группы’) def send_msg(peer_id: int, message: str, attachment: str = «»): return vk.messages.send( **locals(), random_id=0) while True: #бесконечный цикл for event in longpoll.listen(): #прослушиваем все сообщения if event.type == VkBotEventType.MESSAGE_NEW: responce = event.object.text.lower() uids = event.obj.from_id if responce == «id»: send_msg(id,f»твой ид «)
POMA0197263, потратил минут 10 своей жизни, ну должно работать.

samperirrrrr, line 15, in
responce = event.object.text.lower()
AttributeError: ‘NoneType’ object has no attribute ‘lower’

POMA0197263, питон обнови.
POMA0197263, или версию ставь меньше

60098e59d79fc033113808.jpeg

POMA0197263, удали питон, установи версию ниже.
samperirrrrr, я сделал, но все равно пишет «твой айди None»
POMA0197263, не может быть.
samperirrrrr, но айди все равно None

Еще по теме:  Как восстановить переписку в ВК после удаления через телефон айфон 11

# -*- coding: utf8 -*- import vk_api from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType token = ‘token tyteq’ vk_session = vk_api.VkApi(token=token) vk = vk_session.get_api() longpoll = VkBotLongPoll(vk_session, ‘ид группы’) def send_msg(peer_id: int, message: str, attachment: str = «»): return vk.messages.send( **locals(), random_id=0) while True: #бесконечный цикл for event in longpoll.listen(): #прослушиваем все сообщения if event.type == VkBotEventType.MESSAGE_NEW: responce = event.object.text.lower() uids = event.obj.from_id if responce == «id»: send_msg(id,f»твой ид «)

samperirrrrr, line 13, in
responce = event.object.text.lower()
AttributeError: ‘NoneType’ object has no attribute ‘lower’

неправильно, event.message.from_id. зависит от версии лонг полла

SoreMix

код в студию
Ответ написан более двух лет назад

import vk_api from vk_api.utils import get_random_id from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType def write_message(sender, message): authorize.method(‘messages.send’, ) def get_name(from_id): if from_id > 0: sender_info = getting_api.users.get(user_ids=from_id)[0] full_name = sender_info.get(‘first_name’) + ‘ ‘ + sender_info[‘last_name’] return full_name token = «тут был токен» authorize = vk_api.VkApi(token=token) longpoll = VkBotLongPoll(authorize, group_id=тут айди группы) getting_api = authorize.get_api() for event in longpoll.listen(): if event.type == VkBotEventType.MESSAGE_NEW and event.from_chat and event.message.get(‘text’) != «»: reseived_message = event.message.get(‘text’) sender = event.chat_id from_id = event.message.get(‘from_id’) name = get_name(from_id) if reseived_message.lower() == «/бот»: write_message(sender, «✅ Работаю»)

SoreMix

POMA0197263, а в from_id тогда что?
SoreMix, имя и фамилия пользователя

SoreMix

from_id = event.message.get(‘from_id’) print(from_id)
Ваш ответ на вопрос

Войдите, чтобы написать ответ

python

  • Python

Почему код из книги Эрика Метиза «Изучаем Python» не работает?

  • 1 подписчик
  • 2 часа назад
  • 47 просмотров

Источник: qna.habr.com

Python-сообщество

[RSS Feed]

  • Начало
  • » Python проекты
  • » Получение имён сообществ и количества подписчиков сообществ пользователя по ID

#1 Июнь 28, 2015 11:46:41

Получение имён сообществ и количества подписчиков сообществ пользователя по ID

Я новичок в Python, вот недавно начал смотреть разные библиотеки,вот сам скрипт:

# -*- coding: utf-8 -*- import vk_api status=[] login, password = u’login’, u’password’ vk = vk_api.VkApi(login, password) vk.authorization() count=1 values = ‘user_id’ : 170831732, #Тут надо ввести ID того человека,у которого скрипт будет брать группы > groups = vk.method(‘users.getSubscriptions’, values)[‘groups’][‘items’] for group in groups: print(count) count+=1 val= ‘group_id’:group > groupFollowers = vk.method(‘groups.getMembers’,val)[‘count’] groupName = vk.method(‘groups.getById’,val)[0][‘name’] status.append(str(groupFollowers) + » + str(groupName)) with open(‘out.txt’, ‘w’, encoding=’utf-8′) as f: #Всё пишется в файл out.txt for line in status: f.write(str(line)) f.write(«n») f.close()

Конечно код быдлокодерский, но делать было нечего Скорость маленькая, т.к. в vk_api библиотеке стоит задержка перед каждым запросом 300мс, если её не будет, то вк будет отклонять запросы.Скоро сделаю сортировку по кол-ву подписчиков
Пример вывода:
3054043 332103 60989 469345 3178597 219687 319109 37652 26134 981278 21369 513342 205613 743286 84381 51414 10070 1894889 1709481 311800 906253 778266

Отредактировано Tiberium (Июнь 28, 2015 13:31:15)

Источник: python.su

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