vk api python. Получаем аудиозаписи со своей страницы
В этой статье воспользуемся замечательной библиотекой vk_api, которая позволяет взаимодействовать с сайтом Вконтакте средствами python . Чтобы получить список аудиозаписей со своей страницы , нам не нужно создавать приложение вконтакте , достаточно иметь свой логин и пароль
Устанавливаем библиотеку
pip install vk_api
Еще необходимо будет установить библиотеку beautifulsoup4. Эта библиотека используется в модуле VkAudio библиотеки vk_api для парсинга
pip install beautifulsoup4
Напишем код , который авторизует нас в вконтакте , а потом получает все наши треки
import vk_api
from vk_api.audio import VkAudio
def main():
vk_session = vk_api.VkApi('Ваш логин', 'Ваш пароль')
try:
vk_session.auth()
except vk_api.AuthError as error_msg:
# Если происходит исключение во время аутентификации, то выводим ошибку и выходи
print(error_msg)
return
# Модуль для получения аудиозаписей без использования официального API.
vkaudio = VkAudio(vk_session)
for track in vkaudio.get_iter():
print(f"Исполнитель : {track.get('artist')}")
print(f"Название трека : {track.get('title')}")
print(f"Ссылка на трек(url) : {track.get('url')}")
print('--------------------------------------------')
if __name__ == '__main__':
main()
Скриншот выполнения программы
Данная библиотека с помощью нескольких строчек кода позволяет нам авторизоваться на сайте и спарсить наши аудиозаписи.
Если мы с нуля писали бы авторизацию , то пришлось бы написать примерно следующий код. Тут не рассматривается обработка ошибок, наличие двухфакторной авторизации и другие моменты.
import requests
import re
RE_LOGIN_HASH = re.compile(r'name="lg_h" value="([a-z0-9]+)"')
login, password = 'Ваш логин', 'Ваш пароль'
# Создаем сессию с исползованием библиотеки requests
client_http = requests.Session()
# Добавляем user_agents , эмулируя поведение браузера
client_http.headers.update({
'User-agent': 'Mozilla/5.0 (Windows NT 6.1; rv:52.0) '
'Gecko/20100101 Firefox/52.0'
})
# Выполняем запрос к сайту , чтобы получить cookies
response = client_http.get('https://vk.com/')
values = {
'act': 'login',
'role': 'al_frame',
'_origin': 'https://vk.com',
'utf8': '1',
'email': login,
'pass': password,
'lg_h': search_re(RE_LOGIN_HASH, response.text)
}
# Отправляем post запрос с нашим логином и паролем.
response = client_http.post('https://login.vk.com/', values)
#Смотрим ответ
print(response.text)
#Далее мы должны написать много кода , на случай если используется двухфакторная авторизация
# на случай неудачного ввода данных и все такое. Все это за нас написали разработчики данной библиотеки
Это упрощенный код для авторизации, чтобы показать как происходит авторизация с помощью библиотеки requests. А с помощью библиотеки vk_api авторизацию можно сделать всего лишь тремя строчками
import vk_api
vk_session = vk_api.VkApi('Ваш логин', 'Ваш пароль')
vk_session.auth()
И при том эти три строчки за кулисами делают очень много вещей , такие как обработка ошибок , сохранение кукис , различные варианты авторизации(по токену или по логинуи паролю).
А с помощью еще трек строчек кода , мы получаем все наши аудиозаписи
vkaudio = VkAudio(vk_session)
for track in vkaudio.get_iter():
print(track)
Загляните в исходники данных методой и классов в библиотеке vk_apiи вы увидите какие запросы к api вконтакте выполняются и как парсятся аудиозаписи. В частности в методе __init__ класса VkAudio выполняется запрос к api users.get для получения Id авторизованного пользователя. А в методе get_iter() в цикле выполняются post запросы для получения аудиозаписей
В данной статье был рассмотрен конкретный пример использования библиотеки vk_api , которая предоставляет кучу возвоможностей и с замечательными примерами , которые можно посмотреть в репозитории.В следующих статьях мы рассмотрим еще больше примеров