使用XPath进行网络抓取. 结构为: 但是其中一个tr仅包含1或1 td. 所以我只想刮一下TR是否包含两个标签.我在给路$route = $path->query("//table[count(tr) > 1]//tr/th");要么$route = $path->query("//table[count(tr) > 1]//tr/td");但这不起作用.我在这里提供了Orjinal表的链接.第一个表的最后两个TR是只有一个TD.那就是问题所在.第二或第三表也有相同的问题.$route = $path->query("//tr[count(*) >= 2]/th");foreach ($route as $th){$property[] = trim($th->nodeValue);}$route = $path->query("//tr[count(*) >= 2]/td");foreach ($route as $td){$value[] = trim($td->nodeValue);}我试图同时选择TH和TD.但是,如果TR包含一个TD,则可以解决该问题.因为在和TD计数和TH计数不一样,所以我抓取的TD比TH多解决方法:这个XPath//table[count(.//tr) > 1]/th将在所有表元素中选择具有多个tr后代的所有th元素(无论是否存在tbody).这个XPath//tr[count(*) > 1]/*将选择具有多个子元素的所有tr元素子元素.这个XPath//tr[count(th) = count(td)]/*将选择所有tr元素的子元素,其中th子元素的数量等于td子元素的数量.OP发布了指向该站点的链接.根元素位于xmlns =“ http://www.w3.org/1999/xhtml”命名空间中.标签:xpath,html,xml,php来源: https://codeday.me/bug/20191108/2006868.html