PHP 使用 XPATH 从 HTML 页面获取文本和 Href
PHP Getting Text and Href from HTML page using XPATH
这是我关于 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>
这是我用来提取其他 TD 的示例PHP
$xpath = new DOMXpath($document);
foreach($xpath->evaluate('//table/tbody/tr') as $tr) {
enter code here
$i = 0;
$row = [];
foreach ($xpath->evaluate('td', $tr) as $td) {
if ($i == 0){
$row['datumtijd'] = date_format(date_create(str_replace(" @", "",trim($td->nodeValue))),"Y-m-d H:i:s");
}
if ($i == 1){
print_r($td->nodeValue); //Completely empty
}
非常感谢任何帮助。
有一种不使用 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";
}
输出:
19-10-2020 @ 17:33
5f8db1c332ea9b22d375b7c0
这是我关于 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>
这是我用来提取其他 TD 的示例PHP
$xpath = new DOMXpath($document);
foreach($xpath->evaluate('//table/tbody/tr') as $tr) {
enter code here
$i = 0;
$row = [];
foreach ($xpath->evaluate('td', $tr) as $td) {
if ($i == 0){
$row['datumtijd'] = date_format(date_create(str_replace(" @", "",trim($td->nodeValue))),"Y-m-d H:i:s");
}
if ($i == 1){
print_r($td->nodeValue); //Completely empty
}
非常感谢任何帮助。
有一种不使用 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";
}
输出:
19-10-2020 @ 17:33
5f8db1c332ea9b22d375b7c0