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

如何在C#中使用HTML Agility Pack通过部分文本查找链接

嘿,这问题很好解决!你当前的代码用==做精确匹配,所以只能找到和keywords完全一致的div/h1文本。要实现你要的“输入部分文本就能匹配”的效果,只需要把精确相等的判断改成包含判断就可以了。

核心修改点

原来的判断逻辑是严格相等:

if (keywords == title.SelectSingleNode("div/h1").InnerText)

我们把它改成检查文本是否包含关键词:

var h1Text = title.SelectSingleNode("div/h1").InnerText;
if (h1Text.Contains(keywords))

如果需要忽略大小写(比如输入"tiger stripe"也能匹配HTML里的"Tiger Stripe Rayon Shirt"),可以用更灵活的大小写不敏感判断:

if (h1Text.IndexOf(keywords, StringComparison.OrdinalIgnoreCase) >= 0)

完整的健壮版代码

我还帮你加了空值判断,避免页面结构异常时抛出空引用错误,让代码更稳定:

foreach (var title in htmlNodes) 
{
    // 先获取节点,避免直接调用InnerText导致空引用
    var h1Node = title.SelectSingleNode("div/h1");
    var pNode = title.SelectSingleNode("div/p");
    
    if (h1Node != null && pNode != null)
    {
        string h1Text = h1Node.InnerText;
        string pText = pNode.InnerText;
        
        // 部分匹配h1文本,保持p文本的精确匹配(如果p也需要部分匹配,同理修改)
        if (h1Text.Contains(keywords) && pText == color) 
        {
            var linkNode = title.SelectSingleNode("div/p/a");
            if (linkNode != null)
            {
                Console.WriteLine(linkNode.GetAttributeValue("href", "pas d'addresse"));
            }
        }
    }
}

额外提示

  • 结合你提供的HTML结构,当keywords设为"Tiger Stripe"时,就能匹配到<h1>里的"Tiger Stripe Rayon Shirt"元素了。
  • 如果color也需要部分匹配,把pText == color改成pText.Contains(color)或者大小写不敏感的判断就行。

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

相关产品推荐
方舟 Agent Plan

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

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