Найти в Дзене

Парсим Youtube в гугл-таблицах

Оглавление

Забирайте сразу два способа вытащить полезные данные в табличку!

На днях читатель задал вопрос в комментариях к статье про парсинг данных: "Здравствуйте! можно ли в гугл таблицы спарсить открытые данные с youtube такие как количество просмотров и название видео?".

"Отличная тема для статьи" — подумал я. И открыл гугл-таблицы.

Кстати, хороший лайфхак: Если хотите создать новую таблицу, наберите в адресной строке браузера "sheets.new" и нажмите энтер — это намного быстрее.

О чем это вообще!?

Это уже третья моя статья на тему парсинга, но не все читают этот канал с начала, поэтому расскажу сначала про парсинг: что это такое и зачем нужно. Парсинг (калька с английского Parsing) — автоматический сбор информации с какого-либо сайта с целью его дальнейшей обработки и преобразования. Можно представить, как человек открывает браузер, ходит с сайта на сайт и переписывает с них в табличку данные. Парсинг — то же самое, только ходит не человек, а машина. Так делают и роботы поисковых сайтов, и различные сервисы, агрегаторы, злоумышленники, продающие персональные данные, да много кто ещё.

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

Способ первый - встроенная функция IMPORTXML

Самый простой способ — использовать встроенную функцию IMPORTXML, которая позволяет извлечь нужные куски XML файла (и HTML тоже, так что обычная веб-страница тоже разбирается на кусочки).

В ячейку A1 вставим адрес ролика в ютюб, из которого мы хотим извлечь данные. В ячейку B1 нужно указать “путь” в XML-файле до нужного элемента. Его можно найти в исходном коде страницы с помощью поиска - поищите, например, количество просмотров.

Вот подходящий кусок для извлечения.
Вот подходящий кусок для извлечения.

Нам нужно извлечь данные из параметра "content" тега "meta", который вложен в тег "div" с параметром "id" = "watch7-content". Опишем этот путь в XPATH и вставим в ячейку B1:

//div[@id='watch7-content']/meta/@content

Наконец, в ячейку C1 поместим формулу:

=IMPORTXML(A1;B1)

Результат:

-3

Как и было в запросе изначальном, количество просмотров и название видео (а также описание, дата, категория и другие данные были выгружены. Если нужно что-то конкретное из списка, это легко можно получить с помощью функции INDEX.

А где лайки/дизлайки? А они не входят в список основных параметров. И если пытаться найти блок, где они отображаются, в исходном коде мы их не найдем.

Дело в том, что как и все современные веб-приложения, Ютюб отображает страницу динамически, используя скрипты. Если забить в поиске точное количество лайков, его даже можно найти в данных для инициализации скрипта. И можно попробовать загрузить и их, построив правильный XPATH... но, нужный нам кусок скрипта, к сожалению, слишком большого размера, и не может быть загружен с помощью функции IMPORTXML:

-4

Так что, если нам нужны будут не только просмотры, но лайки и дизлайки — нам потребуется другой способ, о котором я напишу в следующей статье.

Пишите в комментариях, если уже догадались о каком способе я говорю!