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

使用XPath提取元素background-image的url值返回null如何解决

问题原因
  • 类名匹配规则错误:原XPath查询语句为//*[@class="zoomWindow "],类名尾部多写了一个空格,和目标元素的class="zoomWindow"属性值不匹配,导致无法查询到对应DOM元素。
  • 字符串截取边界错误:原提取逻辑默认background-image的url用单引号'包裹,但目标元素的url实际用双引号"包裹,截取边界不匹配,即使拿到元素也无法提取到正确的url值。
修正后代码
<?php
$doc = new DOMDocument;
$doc->preserveWhiteSpace = false;
$doc->strictErrorChecking = false;
$doc->recover = true;

ini_set('user_agent', 'My-Application/2.5');
libxml_use_internal_errors(true);
$doc->loadHTMLFile('https://www.revolve.com/elliatt-cassini-dress/dp/ELLI-WD346/?d=Womens&srcType=hp_recs_viewed');
$xpath = new DOMXPath($doc);
// 修正类名匹配,去掉尾部多余空格
$imgs = $xpath->query('//*[@class="zoomWindow"]');
$datae = []; // 初始化数组避免未定义报错
foreach($imgs as $b){
    $datae[] = array(
        // 修正截取边界,匹配双引号包裹的url格式
        'img' => $xpath->evaluate(
            'substring-before(substring-after(./@style, "background-image: url(\""), "\")")',
        $b
        ),
    );
}
var_dump($datae);
?>
补充说明

如果运行后仍然返回空,可检查目标页面是否为前端动态渲染内容:loadHTMLFile仅能获取页面静态源代码,若zoomWindow元素是JS动态生成的,静态爬取无法拿到对应内容,需搭配无头浏览器渲染页面后再提取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:57:00