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

如何用HtmlAgilityPack解析指定页面中list-subject类下的链接列表?

使用HtmlAgilityPack解析目标页面提取指定链接

没问题,我来带你一步步完成这个解析任务,用HtmlAgilityPack处理这类HTML提取需求非常顺手:

1. 先安装HtmlAgilityPack

首先你需要在项目里安装这个库,最简单的方式是通过NuGet:

  • 如果你用Package Manager Console,执行命令:
    Install-Package HtmlAgilityPack
    
  • 或者在Visual Studio的NuGet包管理器里搜索HtmlAgilityPack并安装。

2. 编写解析代码

接下来是核心的解析逻辑,我会把代码拆解开解释:

using HtmlAgilityPack;
using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main(string[] args)
    {
        // 目标页面URL
        string targetUrl = "https://marumaru.sale/bbs/cmoic/19997";
        
        // 初始化HtmlWeb对象,用于加载页面
        var web = new HtmlWeb();
        try
        {
            // 加载页面并获取HTML文档对象
            HtmlDocument doc = web.Load(targetUrl);
            
            // 使用XPath定位目标元素:先找到所有class为list-subject的<td>,再获取其下的<a>标签
            var targetLinks = doc.DocumentNode.SelectNodes("//td[@class='list-subject']/a")
                              ?.Select(a => a.GetAttributeValue("href", string.Empty))
                              ?.Where(href => !string.IsNullOrEmpty(href) && href.StartsWith("/bbs/cmoic/19997/"))
                              ?.ToList();
            
            // 输出结果
            if (targetLinks != null && targetLinks.Any())
            {
                Console.WriteLine("提取到的目标链接:");
                foreach (var link in targetLinks)
                {
                    Console.WriteLine(link);
                }
            }
            else
            {
                Console.WriteLine("未找到符合条件的链接");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"加载或解析页面时出错:{ex.Message}");
        }
    }
}

3. 关键代码解释

  • 加载页面:HtmlWeb.Load()方法会帮你下载并解析目标页面的HTML,返回一个HtmlDocument对象供后续操作。
  • XPath选择器://td[@class='list-subject']/a的意思是:在整个文档中找到所有class属性等于list-subject的<td>元素,然后选取它们直接子节点中的<a>标签。
  • 提取href属性:GetAttributeValue("href", string.Empty)会安全地获取<a>标签的href属性值,如果属性不存在就返回空字符串,避免空引用异常。
  • 过滤链接:我们用Where筛选出符合你指定格式的链接(以/bbs/cmoic/19997/开头),确保只保留你需要的目标链接。

注意事项

  • 有些网站可能有反爬机制,如果加载页面失败,可以尝试给HtmlWeb设置User-Agent,模拟浏览器请求:
    web.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36";
    
  • 确保你的项目有网络访问权限,尤其是在桌面应用或.NET Core/.NET 5+项目中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 23:22:51