简单的html DOM无法看到所有的hrefs

时间:2016-02-15 11:06:25

标签: php html simple-html-dom

我试图检索某个网站的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

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

1 个答案:

答案 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是一个废话库。考虑一下你的选择: