Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.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
PHP使用XPATH从HTML页面获取文本和Href_Php_Html_Domxpath - Fatal编程技术网

PHP使用XPATH从HTML页面获取文本和Href

PHP使用XPATH从HTML页面获取文本和Href,php,html,domxpath,Php,Html,Domxpath,这是我在Stack上的第一个问题,所以如果有什么不合适的地方,请原谅我 我有一个网页,上面有一个我想提取的信息列表,其中一个td中也有一个,但我不知道如何访问它 HTML示例: <tbody> <tr> <td> 19-10-2020 @ 17:33 </td> <td class="hidden-xs hidden-sm"> <a href="#"

这是我在Stack上的第一个问题,所以如果有什么不合适的地方,请原谅我

我有一个网页,上面有一个我想提取的信息列表,其中一个td中也有一个,但我不知道如何访问它

HTML示例:

<tbody>
  <tr>
   <td>
     19-10-2020 @ 17:33
   </td>
   <td class="hidden-xs hidden-sm">
    <a href="#" data-identifier="5f8db1c332ea9b22d375b7c0"></a>                                       
   </td>

非常感谢您的帮助。

有一种简单的方法可以在不使用xpath的情况下使用php获取第n个元素:

$dom = new DOMDocument();
@$dom->loadHTML($HTML);
foreach($dom->getElementsByTagName('table') as $table) {
  echo innerHTML($table->getElementsByTagName('td')->item(ITEM_NUMBER))
}

只关注提取数据(而不是格式化等),并假设您的html是固定的,如下图所示,尝试以下方法:

 $str = '
<tbody>
  <tr>
   <td>
     19-10-2020 @ 17:33
   </td>
   <td class="hidden-xs hidden-sm">
    <a href="#" data-identifier="5f8db1c332ea9b22d375b7c0"></a>                                       
   </td>
  </tr>
</tbody>
';
$doc = new DOMDocument();
$doc->loadHTML($str);
$doc = simplexml_import_dom($doc);
$dates = $doc->xpath('//td[1]');
$identifiers = $doc->xpath('//td/a[@href]/@data-identifier');

foreach(array_combine($dates, $identifiers) as $date => $identifier) {
    echo trim($date) . "\n";
    echo trim($identifier) . "\n";
}

值得检查您处理的源代码(即php代码中加载的html)。有时在浏览器中查看结构可能会产生误导(我认为chrome有时会添加
标记)。您正试图提取哪些信息?我喜欢获取日期和数据标识符以及示例中未包含的其他文本字段
 $str = '
<tbody>
  <tr>
   <td>
     19-10-2020 @ 17:33
   </td>
   <td class="hidden-xs hidden-sm">
    <a href="#" data-identifier="5f8db1c332ea9b22d375b7c0"></a>                                       
   </td>
  </tr>
</tbody>
';
$doc = new DOMDocument();
$doc->loadHTML($str);
$doc = simplexml_import_dom($doc);
$dates = $doc->xpath('//td[1]');
$identifiers = $doc->xpath('//td/a[@href]/@data-identifier');

foreach(array_combine($dates, $identifiers) as $date => $identifier) {
    echo trim($date) . "\n";
    echo trim($identifier) . "\n";
}
19-10-2020 @ 17:33
5f8db1c332ea9b22d375b7c0