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

PHP使用preg_match_all爬取指定网页车辆信息,无法提取HTML表格独立数据

解决PHP爬取HTML表格数据的问题

先别着急,咱们一步步来搞定这个表格数据提取的问题!首先得确认你的CURL请求已经正确拿到了目标页面的完整HTML——这是提取数据的基础,要是页面都没拿到,后面就无从谈起啦。

第一步:先确保CURL请求配置正确

先检查你的curl.php里有没有正确加载cookies.txt,同时模拟浏览器请求头避免被反爬,示例配置如下:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://inkastudios.ml/test/?placa=D2D361');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies.txt'); // 加载已有的cookies
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies.txt'); // 后续请求保存cookies(可选)
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 把结果返回给变量而不是直接输出
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // 自动跟随跳转
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'); // 模拟浏览器UA
$response = curl_exec($ch);
curl_close($ch);

// 先验证是否拿到了有效页面
if(empty($response)) {
    die("CURL请求失败!检查cookies路径、网络连接或者网站反爬规则");
}

你可以先在这段代码后加个echo $response;,看看输出的内容里有没有你要的车辆信息表格,确认请求没问题再往下走。

第二步:用DOMDocument解析表格数据

PHP内置的DOMDocument+DOMXPath是解析HTML表格最可靠的方式(比正则表达式靠谱多了),下面是具体的提取代码:

// 忽略HTML解析时的警告(很多网站的HTML代码不规范,会抛出警告)
libxml_use_internal_errors(true);
$dom = new DOMDocument();
$dom->loadHTML($response);
libxml_clear_errors();

// 用XPath定位目标表格,你可以根据表格的实际特征调整规则:
// 比如表格有class就写//table[@class='vehicle-table'],有id就写//table[@id='car-info'],没有特征就直接用//table取第一个表格
$xpath = new DOMXPath($dom);
$targetTable = $xpath->query("//table")->item(0);

if(!$targetTable) {
    die("页面里没找到目标表格!检查XPath规则或者页面结构是否变化");
}

// 遍历表格行,提取数据
$vehicleInfo = [];
$rows = $targetTable->getElementsByTagName('tr');

foreach($rows as $row) {
    $cells = $row->getElementsByTagName('td');
    $rowData = [];
    foreach($cells as $cell) {
        // 提取单元格文本,去掉多余的空格和换行
        $rowData[] = trim($cell->textContent);
    }
    // 跳过空行
    if(!empty($rowData)) {
        $vehicleInfo[] = $rowData;
    }
}

// 打印提取到的车辆数据
print_r($vehicleInfo);

一些额外提示

  • 如果表格有<thead>和<tbody>,可以把XPath改成//table/tbody/tr,只提取主体内容行
  • 要是遇到合并单元格(colspan/rowspan),需要额外写逻辑来补全缺失的数据
  • 确保你的PHP环境启用了dom和libxml扩展(绝大多数服务器默认是开启的)
  • 如果网站有反爬,可能需要添加更多请求头(比如Accept-Language),或者设置请求延迟

要是还是提取不到数据,你可以把$response里的表格部分代码贴出来,我再帮你调整XPath定位规则~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:36:49