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

PHP cURL获取页面DOM不完整,无法提取评论内容的问题求助

问题原因

核心问题是页面内容由JavaScript动态渲染:

  • cURL仅能获取服务器返回的原始HTML源码,不会执行页面中的JavaScript;
  • 浏览器开发者工具中看到的<global>标签内容,是浏览器执行JS后动态插入DOM的,因此cURL拿到的原始HTML里该标签为空。

解决方案1:直接调用评论数据API(推荐)

动态渲染的评论内容通常来自后端API,可通过浏览器抓包获取接口信息:

  1. 打开目标页面,启动浏览器开发者工具的「Network」面板;
  2. 刷新页面,筛选「XHR/Fetch」请求,找到包含评论数据的接口(通常带有reviews/feedback等关键词);
  3. 复制接口的URL、请求头和参数,用cURL直接请求接口,获取结构化JSON数据,无需解析HTML。

示例代码(以模拟抓包到的API为例,实际需以你抓包结果为准):

$apiUrl = 'https://www.feefo.com/api/feedback?businessId=firebrand-promotions&displayFeedbackType=SERVICE&timeFrame=YEAR';

$curli = curl_init();
curl_setopt_array($curli, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_URL => $apiUrl,
    CURLOPT_HTTPHEADER => [
        'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36',
        'Accept: application/json'
    ]
]);

$apiResult = curl_exec($curli);
$reviews = json_decode($apiResult, true);

// 处理评论数据
print_r($reviews);

解决方案2:使用支持JS渲染的无头浏览器

若无法找到API或API有反爬限制,可通过无头浏览器模拟浏览器执行JS,获取渲染后的完整HTML。

示例:使用spatie/browsershot(PHP包)

  1. 安装依赖:
composer require spatie/browsershot
  1. 确保服务器已安装Chrome/Chromium和Node.js(该包依赖Puppeteer);
  2. 代码示例:
use Spatie\Browsershot\Browsershot;

$url = 'https://www.feefo.com/en-US/reviews/firebrand-promotions?displayFeedbackType=SERVICE&timeFrame=YEAR';

// 获取渲染完成后的HTML
$html = Browsershot::url($url)
    ->userAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36')
    ->waitForNetworkIdle() // 等待所有网络请求完成,确保内容加载完毕
    ->html();

// 解析HTML获取目标内容
$dom = new DOMDocument();
@$dom->loadHTML($html);
$xmlPath = new DOMXPath($dom);
$reviews = $xmlPath->query('//global');

// 遍历输出结果
foreach ($reviews as $review) {
    echo $dom->saveHTML($review);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 18:22:47