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

如何改进C# YouTube播放列表查询程序以获取100+视频?

解决YouTube公开播放列表无法获取全部视频标题的方案

你的问题核心是依赖页面初始HTML爬取,而YouTube播放列表超过100条后采用滚动动态加载,且页面结构随时可能变化,正则匹配的方式既不稳定也无法获取后续内容。下面给两种专业改进方案,优先推荐官方API方案:

方案一:使用YouTube Data API v3(官方推荐,稳定合规)

这是获取YouTube数据的标准方式,支持分页获取所有播放列表内容,不会受页面结构变动影响。

步骤:

  1. 前往Google Cloud控制台创建项目,启用YouTube Data API v3,生成API密钥(免费额度足够个人使用)。
  2. 在C#项目中安装NuGet包:Google.Apis.YouTube.v3

代码示例:

using Google.Apis.Services;
using Google.Apis.YouTube.v3;
using Google.Apis.YouTube.v3.Data;

static async Task<List<string>> GetAllPlaylistVideos(string playlistId, string apiKey)
{
    var videoTitles = new List<string>();
    var youtubeService = new YouTubeService(new BaseClientService.Initializer()
    {
        ApiKey = apiKey,
        ApplicationName = "YouTube Playlist Scraper"
    });

    string nextPageToken = null;
    do
    {
        var request = youtubeService.PlaylistItems.List("snippet");
        request.PlaylistId = playlistId;
        request.MaxResults = 50; // 单次请求最大返回50条,API限制
        request.PageToken = nextPageToken;

        var response = await request.ExecuteAsync();
        videoTitles.AddRange(response.Items.Select(item => item.Snippet.Title));

        nextPageToken = response.NextPageToken;
    } while (!string.IsNullOrEmpty(nextPageToken));

    return videoTitles;
}

说明:

  • 通过PageToken处理分页,循环获取直到没有更多内容,能拿到播放列表的所有视频标题。
  • API有免费配额,个人使用完全足够,超出配额后才需要付费。

方案二:模拟动态加载(非官方,不稳定)

如果不想使用API,可以模拟浏览器滚动时的XHR请求,获取后续视频数据。但这种方式依赖YouTube的内部接口,随时可能失效,且可能违反YouTube的服务条款,谨慎使用。

大致思路:

  1. 初始请求页面时,提取页面中的continuation令牌(这个令牌是加载后续内容的关键)。
  2. 向YouTube的内部API端点发送POST请求,携带该令牌,获取下一页的视频数据。
  3. 解析返回的JSON数据,提取标题,同时获取新的continuation令牌,循环直到没有更多内容。

注意:

  • YouTube的内部API结构和令牌规则经常变动,需要频繁调整代码。
  • 可能需要处理请求头(如User-Agent、Cookie等)来模拟真实浏览器请求,否则会被拦截。

原代码的问题总结:

  • 依赖页面HTML结构,正则匹配极易因YouTube页面更新而失效。
  • 只能获取初始加载的100条内容,无法处理动态加载的后续视频。

内容的提问来源于stack exchange,提问作者Ádám Benák

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 11:44:55