UPD: Парсить данные с Ютуба YouTube
Задание:
Спарсить блок лицензии конкретно заданного видео на YouTube.

Для этого подключил библиотеку «Simple Html Dom Php»
<?php
require 'simple_html_dom.php'; //подключаем библиотеку
$link = 'https://www.youtube.com/watch?v=kdmBTTAFlk0';
$html = file_get_html( $link ); // получаем страницу
$load = file_get_contents( $link );
$html= str_get_html( $load );
echo $element = $html->find('#collapsible', 0);
?>
Однако никакого результата не выдает. Тогда как тот же запрос на другие сайты - работает.
Нужно именно спарсить данные. Youtube API и oEmbed не рассматриваются.
Ответы (2 шт):
Вы изобретаете очередной велосипед, просто используйте oEmbed (https://oembed.com/) например есть видео https://www.youtube.com/watch?v=9bZkp7q19f0
для него делаете запрос
https://www.youtube.com/oembed?url=https://www.youtube.com/watch?v=9bZkp7q19f0&format=json
для него получается ответ
{
"thumbnail_height": 360,
"html": "<iframe width=\"480\" height=\"270\" src=\"https://www.youtube.com/embed/9bZkp7q19f0?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>",
"height": 270,
"title": "PSY - GANGNAM STYLE(강남스타일) M/V",
"provider_name": "YouTube",
"author_url": "https://www.youtube.com/user/officialpsy",
"type": "video",
"author_name": "officialpsy",
"thumbnail_url": "https://i.ytimg.com/vi/9bZkp7q19f0/hqdefault.jpg",
"provider_url": "https://www.youtube.com/",
"thumbnail_width": 480,
"version": "1.0",
"width": 480
}
формат можно как json так и xml oEmbed кстати очень многими сервисами поддерживается
Для последующих искателей подобных вопросов: "Как парсить динамические страницы с помощью PHP?"
Ответ простой: Никак.
Потому что PHP - серверный язык. Он не видит исполнения .js скриптов, которые нужны для полной загрузки и отработки страницы.
С помощью библиотеки «Simple Html Dom Php» можно парсить только статические страницы.
Этот вариант мне не подходит, поэтому перешел на Python + Selenium.
К Python подключил request_html. И BeautifulSoup для парсинга HTML-страниц, который умеет извлекать скрипты для дальнейшей работы. Уже такого арсенала хватит для большинства задач. Однако искомый мною блок подгружается JSON'ом после расскрытия блока "Подробнее".
Для решения подключаем Selenium который нужен для управления браузером.
Продолжение в другой теме: Не удается получить содержимое с помощью Beautiful Soup