You need to enable JavaScript to run this app. 如何使用Python搜索YouTube视频后获取视频的完整名称
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python搜索YouTube视频后获取视频的完整名称

解决方案

你可以通过匹配单视频页的标题标签获取视频完整名称,这种方式比直接在搜索结果页匹配更稳定,修改后的代码如下:

import urllib.request
import re

# 加请求头伪装浏览器,避免被YouTube反爬拦截
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
}

search_keyword = "music"
# 构造搜索请求
search_req = urllib.request.Request("https://www.youtube.com/results?search_query=" + search_keyword, headers=headers)
search_song_url = urllib.request.urlopen(search_req)
html_content = search_song_url.read().decode()

# 提取视频ID,去重避免重复结果
video_ids = list(set(re.findall(r"watch\?v=(\S{11})", html_content)))

if video_ids:
    # 取第一个视频的完整链接
    video_url = "https://www.youtube.com/watch?v=" + video_ids[0]
    # 请求视频详情页
    video_req = urllib.request.Request(video_url, headers=headers)
    video_page = urllib.request.urlopen(video_req).read().decode()
    # 匹配页面title标签,默认格式为「视频名称 - YouTube」
    title_match = re.search(r'<title>(.*?) - YouTube</title>', video_page)
    if title_match:
        video_title = title_match.group(1)
        # 处理HTML转义字符
        video_title = video_title.replace('&amp;', '&').replace('&quot;', '"').replace('&#39;', "'")
        print("视频标题:", video_title)
        print("视频链接:", video_url)
else:
    print("未搜索到相关视频")

注意事项

  • 直接爬取YouTube页面会触发反爬机制,频繁请求可能导致IP被临时限制
  • 页面结构如果发生更新,需要同步调整正则匹配规则
  • 如果是正式场景使用,建议调用官方YouTube Data API获取数据,稳定性更高

内容的提问来源于stack exchange,提问作者Soham Program learner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 02:36:04