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

如何使用XPath获取HTML元素的title属性?(AliExpress实战场景)

如何获取AliExpress商品颜色选择区图片的title属性

嘿,我看了你的代码,问题出在节点定位和属性获取的方式上——你选中的是<li class="item-sku-image">节点,但存着颜色名称的title属性其实在这个li内部的<a>标签里,而且你用node.Attributes["/a[title]"]这种方式获取属性是不对的,XPath不能直接当属性名用哦。

问题拆解

你现在拿到的是li节点,但我们需要的是li下面嵌套的<a>标签,因为颜色名称的title属性就挂在这个a标签上。

修正后的代码

假设你用的是HtmlAgilityPack(从代码里的HtmlWeb能看出来),我给你改好了代码,直接就能用:

Console.WriteLine("Product URL: ");
string url = Console.ReadLine();

var web = new HtmlWeb();
var doc = web.Load(url);

// 直接定位到li节点下的a标签,这些a标签才带title属性
var colorLinks = doc.DocumentNode.SelectNodes("//li[@class='item-sku-image']/a");

// 先判断节点是否存在,避免空引用报错
if (colorLinks != null)
{
    foreach (var link in colorLinks)
    {
        // 用GetAttributeValue更安全,属性不存在时会返回默认值
        string colorName = link.GetAttributeValue("title", "未知颜色");
        Console.WriteLine(colorName);
    }
}
else
{
    Console.WriteLine("没找到颜色选择的节点哦,可能页面结构变了?");
}

Console.ReadLine();

关键细节说明

  • 精准定位节点:用//li[@class='item-sku-image']/a直接选中li下的a子节点,这样每个节点都是带title的目标标签,不用再额外嵌套查找。
  • 安全获取属性:GetAttributeValue方法比直接取Attributes["title"].Value更稳妥,万一某个a标签没有title属性,它会返回你指定的默认值(比如这里的"未知颜色"),不会直接抛出异常。
  • 空值检查:一定要先判断colorLinks是否为null,要是页面加载失败或者结构变了,找不到节点的话,直接遍历会报错,加个判断更稳妥。

额外提醒

如果之后遇到颜色选项是JS动态渲染的情况(现在这个链接里的是静态HTML,没问题),HtmlAgilityPack就抓不到动态生成的节点了,那时候就得换Selenium这类能模拟浏览器的工具来抓渲染后的页面内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:27:22