简单 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?
我正在尝试检索某个站点的 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?