简单 html DOM 看不到所有 href

simple html DOM cant see all hrefs

我正在尝试检索某个站点的 youtube link。但是当使用简单的 html DOM 解析器时,它找不到我正在寻找的 links。

$new_html = file_get_html("https://www.bia2.com/video/Amir-Shamloo/Delam-Tange/");
    foreach ($new_html->find('href') as $youtube) {
    echo $youtube;
}

它应该找到 link: https://www.youtube.com/watch?v=vJ2aNG0aJPU.

有人知道这里的问题是什么吗?

onload 事件期间,通过 JavaScript 通过 onYouTubeIframeAPIReady("vJ2aNG0aJPU") 插入了特定的 link。

SimpleHtmlDom(或任何其他基于 PHP 的 HTML 解析器)不会执行任何 JavaScript。他们只是解析网络服务器返回的标记。

您需要一个能够执行 Javascript 的抓取程序才能抓取它。或者,您可以自己将参数与该函数匹配 assemble link。

附带说明:$new_html->find('href') 将尝试查找任何名为 "href" 的 元素 ,这显然是错误的。要获取任何元素的所有 href 属性,您必须改用 *[href]

另一方面不是:SimpleHtmlDom 是一个垃圾库。考虑您的选择:

  • How do you parse and process HTML/XML in PHP?