我试图检索某个网站的YouTube链接。但是当使用简单的html DOM解析器时,它无法找到我正在寻找的链接。
$new_html = file_get_html("https://www.bia2.com/video/Amir-Shamloo/Delam-Tange/");
foreach ($new_html->find('href') as $youtube) {
echo $youtube;
}
它应该找到链接:https://www.youtube.com/watch?v=vJ2aNG0aJPU。
有人知道这里的问题是什么吗?
答案 0 :(得分:1)
在<ul>
<li><a class="dropdown" data-hover="title">title</a>
<ul class="v-dropdown2">
<li><a href="#" data-hover="1">1</a></li>
<li><a href="#" data-hover="2">2</a></li>
<li><a href="#" data-hover="3">3</a></li>
<li><a href="#" data-hover="4">4</a></li>
</ul>
<li>
<a class="dropdown2" data-hover="title">title</a>
<ul class="v-dropdown2">
<li><a href="#" data-hover="1">1</a></li>
<li><a href="#" data-hover="2">2</a></li>
<li><a href="#" data-hover="3">3</a></li>
<li><a href="#" data-hover="4">4</a></li>
</ul>
</ul>
事件期间通过onYouTubeIframeAPIReady("vJ2aNG0aJPU")
通过JavaScript插入特定链接。
SimpleHtmlDom(或任何其他基于PHP的HTML解析器)不会执行任何JavaScript。它们只解析网络服务器返回的标记。
你需要一个能够执行Javascript的刮刀才能刮掉它。或者您可以将参数与该函数匹配并自行组合链接。
在旁注:onload
将尝试查找名为“href”的任何元素,这显然是错误的。要获取任何元素的所有href属性,您必须改为使用$new_html->find('href')
。
另一方面不是:SimpleHtmlDom是一个废话库。考虑一下你的选择: