从 Youtube 在线频道获取所有视频标题和链接 (URL)【20260702亲测有效】

最近想要汇总某个油管博主的视频标题和链接到表格中,但是找了一圈都没有可用的

但是在下面的文章找到了,但是已失效,所以自己直接借用教程内容,然后用ai按照自己的要求写一份,于是有了本文。

注意:采集类的代码都有时效性,使用时注意甄别,当前测试有效时间为2026-07-02 12:07

虽然没有内置工具可以从 YouTube 频道下载视频链接、标题和观看次数的完整列表,但您可以通过浏览器控制台使用一些解决方法。方法如下:

重要提示:此方法最适合较小的通道。包含数千个视频的频道加载速度可能会很慢。

image-20241014-192230

指示

  1. 前往 YouTube 频道:导航至所需的 YouTube 频道页面,如:https://www.youtube.com/@你喜欢的博主ID/videos。
  2. 打开视频选项卡:单击“视频”选项卡可加载频道的视频列表。
  3. 检查元素:右键单击页面上的任意位置,然后选择“检查”或“检查元素”(选项可能会根据您的浏览器而有所不同)。这将打开开发人员工具。您也可以按 F12 按钮。
  4. 控制台选项卡:切换到开发人员工具中的“控制台”选项卡。
  5. 滚动代码(粘贴并执行):将以下代码粘贴到控制台并按 Enter:
image-20241014-192305
   var scroll = setInterval(function(){ window.scrollBy(0, 1000)}, 1000); 

注意:您可能会收到以下错误:

警告:请勿将您不理解或未亲自检查的代码粘贴到 DevTools 控制台中。这可能会让攻击者窃取您的身份或控制您的计算机。请在下面输入“允许粘贴”并按 Enter 键以允许粘贴。

image-20241014-192325

如果你明白了,按照说明进行操作以允许粘贴

此代码将使页面自动向下滚动,显示更多视频。

计算机硬件

 

 

image-20241014-192342
  1. 停止滚动:所有视频加载后,粘贴下一个代码并按 Enter 键:
window.clearInterval(scroll); console.clear(); 
  1. 自动采集并复制到粘贴板:控制台将显示视频标题列表、其链接。复制到粘贴板,并且已经适配excel。

(async () => {
  // 1. 获取所有指定类名的元素
  const elements = Array.from(document.querySelectorAll('.ytLockupMetadataViewModelTitle'));
  
  if (elements.length === 0) {
    console.log('⚠️ 未找到符合条件的元素');
    return;
  }

  // 2. 获取每个元素的视觉坐标信息
  const itemsWithCoords = elements.map(el => {
    const rect = el.getBoundingClientRect();
    return {
      element: el,
      top: rect.top,
      left: rect.left,
      // 用于排序的复合键:先按行(top),再按列(left)
      // 考虑到可能的微小误差,可以引入一个行高阈值,但通常直接比较 top 即可
    };
  });

  // 3. 按照“从上到下,从左到右”排序
  // 首先比较 top 坐标(行),如果 top 非常接近(视为同一行),则比较 left 坐标(列)
  const rowThreshold = 10; // 像素阈值,认为在此范围内的元素属于同一行
  
  itemsWithCoords.sort((a, b) => {
    // 如果垂直距离小于阈值,视为同一行,按水平位置排序
    if (Math.abs(a.top - b.top) < rowThreshold) { return a.left - b.left; } // 否则按垂直位置排序 return a.top - b.top; }); // 4. 提取数据并格式化 const rows = itemsWithCoords.map(item => {
    const el = item.element;
    
    // 确保是链接
    if (el.tagName !== 'A') return null;

    // 获取标题
    let title = (el.innerText || el.getAttribute('aria-label') || '').trim();
    // 清理换行符,防止破坏 Excel 行结构
    title = title.replace(/[\r\n]+/g, ' ').replace(/\s+/g, ' ');
    
    const url = el.href;
    
    if (!title) title = '无标题';
    
    return `${title}\t${url}`;
  }).filter(row => row !== null); // 过滤掉非链接元素

  const count = rows.length;
  const excelContent = rows.join('\n');

  if (count === 0) {
    console.log('⚠️ 未找到有效的超链接');
    return;
  }

  // 5. 复制到剪贴板
  try {
    await navigator.clipboard.writeText(excelContent);
    console.log(`✅ 已按视觉顺序复制 ${count} 条数据到剪贴板。`);
    console.log('📊 统计数量:' + count);
    console.log('💡 提示:数据已按“从上到下、从左到右”排序,可直接粘贴至 Excel。');
  } catch (err) {
    // 降级处理
    const textarea = document.createElement('textarea');
    textarea.value = excelContent;
    document.body.appendChild(textarea);
    textarea.select();
    try {
      document.execCommand('copy');
      console.log(`✅ (兼容模式) 已复制 ${count} 条数据。`);
      console.log('📊 统计数量:' + count);
    } catch (e) {
      console.error('❌ 复制失败');
      console.log(excelContent);
      console.log('📊 统计数量:' + count);
    }
    document.body.removeChild(textarea);
  }
})();

  1. 粘贴到电子表格中:将结果粘贴到 Excel 或 Google Sheets 等电子表格程序中,以便于排序和查看。

表示例

复制的数据可以排列在表格中以便更好地分析:

标题 网址
视频标题 1 https://www.youtube.com/watch?v=……
视频标题 2 https://www.youtube.com/watch?v=……
…… ……

 

 

THE END