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

如何使用AngleSharp从维基百科页面提取<li>标签中的歌曲标题?

提取维基百科歌曲分类页面的歌曲标题解决方案

看起来你已经完成了页面获取和初始解析的步骤,我来帮你补全提取<li>标签及歌曲标题的完整逻辑:

// 获取页面源码并解析
string pageSource = PageSource.Get(url); // 自定义方法
HtmlParser parser = new HtmlParser();
var doc = parser.Parse(pageSource);

// 获取class为"mw-category"的div标签(取第一个匹配项,页面中通常仅存在一个)
var categoryDiv = doc.All
    .Where(tag => tag.LocalName == "div" && tag.GetAttribute("class") == "mw-category")
    .FirstOrDefault();

if (categoryDiv != null)
{
    // 提取该div下所有的<li>标签
    var songListItems = categoryDiv.Descendants("li");
    
    // 遍历每个<li>,提取歌曲标题
    foreach (var li in songListItems)
    {
        // 维基百科分类条目均以<a>标签承载,提取其文本内容作为歌曲名
        var songAnchor = li.Descendants("a").FirstOrDefault();
        if (songAnchor != null)
        {
            string songTitle = songAnchor.InnerHtml.Trim();
            // 此处可替换为你需要的业务逻辑,比如存入列表、写入文件等
            Console.WriteLine(songTitle);
        }
    }
}
else
{
    Console.WriteLine("未找到包含歌曲列表的目标div,请检查页面结构是否更新");
}

关键细节说明:

  • 用FirstOrDefault()替代单纯的Where:页面中只会存在一个mw-category类的div,直接取第一个匹配项更高效,也避免了集合遍历的冗余。
  • 使用Descendants("li"):可以获取div下所有层级的<li>标签,完美适配维基百科分类页面的<ul>嵌套结构。
  • 空引用判断:为<a>标签添加空判断,避免页面结构异常时出现程序报错。
  • 可扩展性提示:这类网页爬取逻辑依赖页面结构,若后续维基百科页面更新,记得检查class属性或标签层级是否变化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:10:27