А что если не ломиться в открытую дверь? Если нужны данные от ютуба, может можно ютуб попросить эти данные дать? В двух прошлых статьях мы рассмотрели варианты парсинга веб-страницы, которую ютюб отдает браузеру и извлечение из нее данных, сегодня мы попробуем попросить ютюб дать эти данные в удобном для нас виде.
Это третья в цикле статей про парсинг ютуба, и пятая на тему парсинга вообще. Вот ссылки на предыдущие две:
Введение. Что такое API?
Современные сайты очень далеко ушли от простых веб-страничек времен становления интернета, по сути многие сайты сейчас представляют собой приложения, мигрировавшие в интернет. Очень часто сайт состоит из трех приложений:
- фронтенд — часть, видимая пользователю: набор из html файлов, скриптов, изображений, таблиц стилей и других компонентов, которые пользователь через браузер, и которые в браузере отображаются как веб-страница.
- бэкенд — часть, которая невидима пользователю, запущенная на сервере. Эта часть получает от пользователя запросы на веб-страницу, запрашивает данные из систем хранения (база данных или другие) и компонует содержимое “под пользователя”, с учетом прав доступа, настроек, типа устройства, с которого пришел запрос.
- база данных или система хранения данных — в базе лежит информация о пользователе, его контенте, настройках, доступах и другая внутренняя информация. “Тяжелые” файлы, например, видео, могут лежать в системах хранения данных.
API (Application Programming Interface) — это специально оговоренный язык, на котором могут коммуницировать приложения, в том числе, фронтенд с бэкендом. Чем нам это может быть полезно? С помощью API зачастую можно получить больше данных, чем через прямой парсинг. Но на доступ к API могут быть свои ограничения: по количеству запросов, по типу запросов или другие.
Используем API
Нам повезло, для Ютюба есть публичный API, с примерами и проверкой кода: https://developers.google.com/youtube/v3/docs. Нам повезло еще раз, и для гугл-таблиц есть уже готовый модуль API Youtube, нужно его только подключить:
- Открываем редактор скриптов
- В левой панели в раскрыващейся вкладке “Сервисы” жмем на плюс
- Листаем список вниз и почти в самом низу находим “YouTube Data API v3” - нажимаем кнопку “Добавить” (проверьте, чтобы идентификатор соответствовал указанному на скриншоте, или поменяйте потом в коде скрипта)
Пол дела сделано. Теперь нужно написать код скрипта:
Воспользуемся заготовкой из прошлой статьи и добавим функцию “GetData”
Через API можно получить очень много информации (подробнее смотрите в документации), в частности "Snippet", куда входит информация о видео (название, описание, длительность, размеры и картинки-превью), и “Statistics”, куда входят просмотры, лайки, дизлайки.
Запрашиваем данные через API мы следующей командой:
var response = YouTube.Videos.list( "snippet,contentDetails,statistics", {"id": id})
Осталось только вывести всю эту информацию с помощью функции appendRow
Заключение
Делюсь с вами гугл-таблицей, где скрипт уже реализован: https://docs.google.com/spreadsheets/d/1HRgsMXeTnnnfoXruNkiXO14hqnMPs6gzlVP4j7ZRrXY/edit?usp=sharing
А самые пытливые из вас могут найти и третий (самый правильный!) способ получения данных из ютюба, про который я расскажу в следующей статье.
Хотите видео с пошаговым объяснением что как и почему?
Я не очень люблю снимать видео, хотя, говорят, что это очень востребованный формат. Напишите в комментариях или в личное сообщение, если вы хотите видео-версию статьи.
Что бы еще такого спарсить?
Это уже зависит от ваших потребностей и фантазии. Многие сервисы имеют свой API, который можно так или иначе запрограммировать в гугл-таблицах. Пишите в комментариях об интересных находках. Пишите в мессенджер, если вам нужна подобная разработка на заказ.