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

PHP使用DOMDocument抓取外部HTML页面Merk字段值(Opel)实现问题

现有代码存在的问题

  • DOMDocument::loadHTML() 方法仅接收HTML字符串作为参数,不能直接传入远程URL,你需要先主动获取目标页面的HTML内容
  • getElementsByTagName('row') 是匹配HTML标签为<row>的元素,你需要匹配的是class="row"下的元素,使用DOMXPath做条件查询效率更高

完整实现代码

<?php
// 1. 获取目标页面的HTML内容
$htmlContent = file_get_contents('https://centraalbeheerkentekencheck.azurewebsites.net/?kenteken=L-762-LZ');
if (!$htmlContent) {
    die('页面内容获取失败');
}

// 2. 初始化DOMDocument,屏蔽HTML不规范的警告
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML($htmlContent);
libxml_clear_errors();
$dom->preserveWhiteSpace = false;

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

// 4. 定位Merk对应的取值节点
// 查询逻辑:找到内部文本为Merk的label类div,取它下一个value类的兄弟节点
$valueNode = $xpath->query('//div[contains(@class, "label") and normalize-space(text())="Merk"]/following-sibling::div[contains(@class, "value")]')->item(0);

if ($valueNode) {
    // 提取文本并去除首尾空白
    $merkValue = trim($valueNode->nodeValue);
    echo $merkValue; // 输出结果为Opel
} else {
    echo '未找到Merk对应的值';
}

补充说明

如果你的PHP环境关闭了allow_url_fopen配置导致file_get_contents无法获取远程内容,可以改用curl方式获取HTML:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://centraalbeheerkentekencheck.azurewebsites.net/?kenteken=L-762-LZ');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$htmlContent = curl_exec($ch);
curl_close($ch);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:36:04