任务:
解析特定 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。
您正在发明另一个轮子,只需使用 oEmbed ( https://oembed.com/ ) 例如有一个视频https://www.youtube.com/watch?v=9bZkp7q19f0
提出要求
他得到了答案
格式可以是json也可以是xml oEmbed 顺便说一句,很多服务都支持
对于类似问题
"Как парсить динамические страницы с помощью PHP?"
的未来寻求者:答案很简单:不可能。
因为 PHP 是一种服务器端语言。它看不到完全加载和处理页面所需的 .js 脚本的执行。
使用“Simple Html Dom Php”库,只能解析静态页面。
这个选项不适合我,所以我切换到
Python + Selenium
.将 request_html 连接到 Python。以及用于解析 HTML 页面的 BeautifulSoup,它可以提取脚本以进行进一步的工作。这个武器库已经足够完成大多数任务了。但是,我要查找的块是在扩展块后由 JSON 加载的
"Подробнее"
。为了解决这个问题,我们连接
Selenium
了控制浏览器所需的内容。继续另一个主题:无法通过 Beautiful Soup 获得内容