使用PHP xPath找到多个html,head,body

时间:2017-01-09 08:50:36

标签: php html curl xpath

我在PHP中使用CURL,DOMDocument,loadHTML,DOMXPath来获取URL的内容。为了验证数据的有效性,我还检查了检索到的html,head和body标签的数量。

我的设置适用于我输入的大多数网址。但是,对于某些网址,报告的这些标记数量意外。 xPaths:

$html = $this->runXpath('/html');
$head = $this->runXpath('/html/head');
$body = $this->runXpath('/html/body');

支票:

if($html->length > 1) {
 echo 'Too many html tags';
}
  • https://www.chownow.com/:2x HTML(是的,我看到了iframe,但这是通过Javascript生成的,CURL不应该呈现?另外,xpath指出html应该是#document的子代 - 其中,根据$ tag-> parentNode-> nodeName,两个HTML元素都是?第二个HTML标记既不会出现在“查看源”中也不会出现在CURL请求中的响应体中。
  • http://neilpatel.com/:2x HTML? (再一次是一个视频,但在DOM源代码中似乎甚至没有相关的iframe标签)。
  • https://www.groovehq.com/:2x BODY? (再次使用iframe,但没有双html错误,而是双身错误?)。

问题

  1. 为什么xpath似乎认为这些标签有多个实例,而我在输出时使用ctrl-f在CURL响应体中找不到它们,在“查看源代码”中也找不到?
  2. 如何“查看xpath看到的内容”以便调试类似的案例?
  3. 几乎看起来DOMDocument或xpath解析javascript,是吗?如果没有,我该如何解释上面的例子?
  4. 我很乐意回答任何其他问题。提前谢谢!

0 个答案:

没有答案