如何使用PHP中的xpaths获取表中的所有元素

时间:2016-03-01 04:27:37

标签: php html xpath

我正在尝试学习如何在网络抓取中使用xpath。我尝试做的其中一件事就是从表格元素中获取所有数据并将其回显到屏幕上。我创建了一个文本html文档:



   <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>Insert title here</title>
</head>
<body>
  <table>
    <tbody>
      <tr>
       <td>
       This is table Data 1
        <a href="this/is/href1">
          <img src="/this/is/src1_.jpg">
        </a> 
      </td> 
      <tr>
       <td>
       This is table Data 2
        <a href="this/is/href2">
          <img src="/this/is/src2_.jpg">
        </a> 
      </td> 
      <tr>
       <td>
       This is table Data 3
        <a href="this/is/href3">
          <img src="/this/is/src3_.jpg">
        </a> 
      </td>
    </tr>
  </tbody>
</table>
</body>
</html>
&#13;
&#13;
&#13;

我遇到了xpath查询问题,然后遍历返回的数据。我想显示elemts和elements属性,就像它是html一样。我尝试获取表数据的xpath是:

$node = $xpath->query("/html/body/table");
$node = $xpath->query("/html/body/table/child::node()");

尝试使用http://php.net/manual/en/domxpath.query.php

上建议的for循环迭代nodeList
for ($i = 0; $i < $node->length; $i++) {

echo "Node Item: " . $node->item($i)->nodeValue  . "<br>";
}

输出:

  

节点项:这是表数据1这是表数据2这是表数据3

如何获取锚点和图像标签以及href和src?

1 个答案:

答案 0 :(得分:0)

获取所有img标签:

$xpath->query("//img");

图片代码srcs:

$xpath->query("//img/@src");

锚标记hrefs:

$xpath->query("//a/@href");

此外,您的HTML无效,这也可能会导致使用xpath出现问题。确保使用DOMDocument和DOMXpath

e.g。 How can I scrape a website with invalid HTML