You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PHP DOM获取data-label为Date的td标签内容?

如何从DHL追踪页面提取特定data-label的内容

嘿,我来帮你搞定这个需求!要从DHL的追踪页面里获取所有data-label="Date"的<td>标签内容,这里有两种实用的方法,你可以根据情况选择:

方法一:使用DOMXPath(推荐,更高效)

DOMXPath可以直接通过属性选择器定位目标元素,不用遍历所有<td>,效率更高,尤其是在HTML结构复杂的时候。

$html = file_get_contents('https://nolp.dhl.de/nextt-online-public/de/search?piececode=TRACKING_NUMBER'); 
$dom = new DOMDocument;

// 禁用HTML解析时的警告(DHL页面可能有不规范的HTML)
libxml_use_internal_errors(true);
$dom->loadHTML($html);
libxml_clear_errors();

// 初始化XPath对象
$xpath = new DOMXPath($dom);

// 用XPath查询所有data-label属性为"Date"的<td>元素
$dateNodes = $xpath->query('//td[@data-label="Date"]');

// 遍历结果输出内容
foreach ($dateNodes as $node) {
    // 获取纯文本内容(去掉多余空格)
    echo trim($node->textContent) . PHP_EOL;
    // 如果需要保留<td>标签本身,就用下面这行:
    // echo $dom->saveHtml($node) . PHP_EOL;
}

代码说明:

  • libxml_use_internal_errors(true):用来屏蔽HTML解析时可能出现的警告,因为很多网站的HTML都不是完全规范的。
  • //td[@data-label="Date"]:这是XPath表达式,意思是选中所有带有data-label="Date"属性的<td>元素,精准又高效。
  • $node->textContent:获取元素的纯文本内容,如果需要保留<td>标签的HTML结构,就用$dom->saveHtml($node)。

方法二:遍历所有并判断属性

如果你不想用XPath,也可以在原来的遍历逻辑里加一个属性判断,这种方法更直观,适合简单场景:

$html = file_get_contents('https://nolp.dhl.de/nextt-online-public/de/search?piececode=TRACKING_NUMBER'); 
$dom = new DOMDocument;

libxml_use_internal_errors(true);
$dom->loadHTML($html);
libxml_clear_errors();

foreach ($dom->getElementsByTagName('td') as $node) {
    // 检查当前<td>的data-label属性是否等于"Date"
    if ($node->getAttribute('data-label') === 'Date') {
        echo trim($node->textContent) . PHP_EOL;
        // 保留标签的话用:echo $dom->saveHtml($node) . PHP_EOL;
    }
}

代码说明:

  • 遍历所有<td>元素后,用$node->getAttribute('data-label')获取属性值,和"Date"做严格比较,符合条件就输出内容。

内容的提问来源于stack exchange,提问作者Trombone0904

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:49:23