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

如何遍历YouTube视频XML订阅源的entry节点获取yt:videoId值

嘿,处理YouTube的XML feed提取视频ID其实不难,我给你几个不同语言的实用实现方案,都是日常开发里常用的:

Python 实现方案

方法1:用标准库 xml.etree.ElementTree

不需要额外安装依赖,适合轻量场景:

import urllib.request
import xml.etree.ElementTree as ET

# 定义YouTube频道的feed URL
feed_url = "https://www.youtube.com/feeds/videos.xml?channel_id=UCBJycsmduvYEL83R_U4JriQ"

# 获取XML内容
with urllib.request.urlopen(feed_url) as response:
    xml_content = response.read()

# 解析XML
tree = ET.fromstring(xml_content)

# 定义命名空间(YouTube的yt前缀对应固定的命名空间URL)
namespaces = {'yt': 'http://www.youtube.com/xml/schemas/2015'}

# 遍历所有entry节点,提取yt:videoId的值
video_ids = []
for entry in tree.findall('entry'):
    video_id = entry.find('yt:videoId', namespaces).text
    video_ids.append(video_id)

# 输出结果
print("提取到的视频ID列表:")
for vid in video_ids:
    print(vid)

方法2:用feedparser库(更简洁)

feedparser会自动处理XML命名空间和解析细节,代码更简洁:
首先安装依赖:

pip install feedparser

然后编写代码:

import feedparser

feed_url = "https://www.youtube.com/feeds/videos.xml?channel_id=UCBJycsmduvYEL83R_U4JriQ"

# 解析feed内容
feed = feedparser.parse(feed_url)

# 提取所有视频ID(feedparser会把冒号转为下划线,所以用yt_videoid)
video_ids = [entry['yt_videoid'] for entry in feed.entries]

# 输出结果
print(video_ids)

Node.js 实现方案

如果用JavaScript/Node.js,可以用xml2js库来解析:
首先安装依赖:

npm install xml2js node-fetch

然后编写代码:

const fetch = require('node-fetch');
const xml2js = require('xml2js');

const feedUrl = "https://www.youtube.com/feeds/videos.xml?channel_id=UCBJycsmduvYEL83R_U4JriQ";

async function extractVideoIds() {
    // 获取XML内容
    const response = await fetch(feedUrl);
    const xmlContent = await response.text();

    // 解析XML
    const parser = new xml2js.Parser({ explicitArray: false });
    const result = await parser.parseStringPromise(xmlContent);

    // 处理entry节点:兼容单视频和多视频的情况
    const entries = result.feed.entry;
    const videoIds = Array.isArray(entries) 
        ? entries.map(entry => entry['yt:videoId'])
        : [entries['yt:videoId']];

    console.log("提取到的视频ID:", videoIds);
}

// 执行函数
extractVideoIds();

关键注意点
  • 一定要正确处理XML命名空间:YouTube的XML里yt前缀对应的命名空间是http://www.youtube.com/xml/schemas/2015,写错的话会找不到目标节点。
  • 如果频道只有一个视频,部分解析库会返回单个对象而非数组,代码里要做兼容判断(比如Node.js示例中的处理逻辑)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:35:59