Как авторизоваться в вк? Нужно для парсинга через bs4
Не могу авторизоваться в вк через vk_api по логину и паролю, выдаёт ошибку:
vk_api.exceptions.BadPassword: Bad password.
Попытался разобраться сам, понял только то что вк не поддерживает такой тип авторизации из за "опасности для пользователя".
Мне нужно спарсить чаты группы любым способом (кроме selenium-а, потому что получилось слишком медленно, когда подрубаешь прокси). Если есть какой-нибудь метод в vk_api для получения чатов групп или ещё что-нибудь, пожалуйста, подскажите.
Пытаюсь авторизоваться так:
import vk_api
login = '777777777777'
password='password'
app_id = 6287487
a = vk_api.VkApi(login=login, password=password, app_id=app_id)
a.auth()
Причём у меня даже получилось авторизироваться так несколько раз и даже сохранить нужную мне страницу, и даже найти нужные мне данные. Но потом всё перестало работать и стало выдавать вот это
vk_api.exceptions.BadPassword: Bad password.
Прошерстил уже весь интернет, но не нашёл никакой полезной и актуальной на сегодняшний день информации.
TraceBack:
File "c:\Users\t8963\OneDrive\Рабочий стол\SAVE\TEST\parsing.py", line 39, in __init__
a.auth()
File "C:\Users\t8963\miniconda3\Lib\site-packages\vk_api\vk_api.py", line 188, in auth
self._auth_cookies(reauth=reauth)
File "C:\Users\t8963\miniconda3\Lib\site-packages\vk_api\vk_api.py", line 203, in _auth_cookies
self._vk_login()
File "C:\Users\t8963\miniconda3\Lib\site-packages\vk_api\vk_api.py", line 324, in _vk_login
raise BadPassword('Bad password')
vk_api.exceptions.BadPassword: Bad password
Ответы (2 шт):
вк не поддерживает такой тип авторизации из за "опасности для пользователя"
Попробуйте использовать модуль requests
для обращения к API Вконтакте напрямую.
Ниже небольшой пример, решающий вашу проблему:
import requests
API_URL = "https://api.vk.com/method/board.getTopics" # Эндпоинт для получения обсуждений группы
api_version = "5.199" # Версия API
token = "" # Токен
def get_topics(group_id: str) -> list:
# Запрос с параметрами
request = requests.get(
API_URL,
params={"access_token": token, "group_id": group_id, "v": api_version},
)
# Количество обсуждений группы
count = request.json()["response"]["count"]
# Если обсуждения есть, вернуть их
if count > 0:
return request.json()["response"]["items"]
else:
return []
if __name__ == "__main__":
print(get_topics("127108923"))
Получить токен можно, например, создав ваше приложение ВКонтакте, которое запрашивает необходимые права доступа.
Или через официально одобренные приложения, для этого можно воспользоваться этим сайтом.
Короче разобрался сам, нужно было всего лишь класс, в качестве родителя которого указать класс VkApi, провести авторизацию и уже выполнять действия.