Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么';即使Firefox显示表元素存在,PHP XPath是否仍能找到它们?_Php_Dom_Xpath - Fatal编程技术网

为什么';即使Firefox显示表元素存在,PHP XPath是否仍能找到它们?

为什么';即使Firefox显示表元素存在,PHP XPath是否仍能找到它们?,php,dom,xpath,Php,Dom,Xpath,在“刮网”的过程中,我试图拉一张精确的桌子 使用cURL将页面拉入$html,成功率很高 使用Firebug获得所需表的精确XPATH 代码如下: $dom = new DOMDocument($html); $dom->loadHTML($html); $xpath = new DOMXpath($dom); $summary = $xpath->evaluate('/html/body/table[5]/tbody/tr/td[3]/table/tbody/tr[8]/td/t

在“刮网”的过程中,我试图拉一张精确的桌子 使用cURL将页面拉入$html,成功率很高

使用Firebug获得所需表的精确XPATH

代码如下:

$dom = new DOMDocument($html);
$dom->loadHTML($html);

$xpath = new DOMXpath($dom);
$summary = $xpath->evaluate('/html/body/table[5]/tbody/tr/td[3]/table/tbody/tr[8]/td/table');
echo "Summary Length: " . $summary->length;
执行时,$summary->length始终为零。它不会拉那个表节点


有什么想法吗?

Firefox可能会将“virtual”
tbody
元素插入到没有这些元素的表中;原始文件中是否存在这些元素?

只需删除“/tbody”。从firefox获得的xpath:

./*[@id='data']/tbody/tr[1]/td[2]/span

创建以下内容:

./*[@id='data']/tr[1]/td[2]/span


芦荟

不,它们没有。但我确实在firefox中看到了它们。我还使用了XPath检查器,可以看到我需要的数据。但是在我的PHP xpath->evaluate中使用它永远不会返回数据。不允许直接进入-必须有一个//。如果不直接指定,则是隐含的。HTML就是这样奇怪。。。开始和结束标记都可以是可选的!如果原始文件中不存在tbody元素,那么它们就不应该出现在PHP xpath查询中。很抱歉。TBODY标签在那里。我在第一次查看源代码时忽略了它们