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

无法获取YouTube视频播放量与发布日期的技术求助

基于Selenium获取YouTube视频播放量与精确发布日期

核心定位方法(适配当前YouTube页面结构)

YouTube页面结构频繁更新,改用data-testid属性定位元素更稳定,以下是针对目标字段的定位逻辑:

1. 获取播放量

当前播放量元素的data-testid为view-count,直接提取元素文本后可清洗为纯数字格式:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

def get_video_views(driver, url):
    driver.get(url)
    # 等待播放量元素加载完成
    view_element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, '[data-testid="view-count"]'))
    )
    view_text = view_element.text
    # 清洗播放量为纯数字(处理"123,456 次观看"这类格式)
    clean_views = int(''.join(filter(str.isdigit, view_text)))
    return view_text, clean_views

2. 获取精确发布日期

视频下方的相对发布时间(如"2年前"),其元素的title属性存储了精确日期,无需点击弹窗,直接提取该属性即可:

def get_video_publish_date(driver):
    # 定位发布时间元素
    date_element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, '[data-testid="publish-date"]'))
    )
    # 提取精确日期(title属性存储完整日期)
    publish_date = date_element.get_attribute('title')
    return publish_date

批量更新DataFrame字段

结合上述函数,遍历DataFrame批量更新对应字段:

import pandas as pd
import time
import random

# 假设你的DataFrame名为df
for idx, row in df.iterrows():
    video_url = row['video_url']
    try:
        views, clean_views = get_video_views(driver, video_url)
        publish_date = get_video_publish_date(driver)
        # 更新DataFrame字段
        df.at[idx, 'views'] = views
        df.at[idx, 'clean_views'] = clean_views
        df.at[idx, 'video_age'] = publish_date  # 替换原相对时间为精确日期
        # 随机延迟,避免触发反爬机制
        time.sleep(random.uniform(2, 5))
    except Exception as e:
        print(f"处理视频 {video_url} 出错: {str(e)}")
        continue

# 保存更新后的DataFrame
df.to_csv('updated_youtube_videos.csv', index=False)

关键注意事项

  • 必须使用WebDriverWait等待元素加载,避免因页面渲染不完全导致元素定位失败;
  • 加入随机延迟,搭配无头模式时建议配置自定义user-agent,降低反爬拦截概率;
  • 若元素定位失败,可通过浏览器开发者工具(F12)重新查看当前页面元素属性,更新CSS选择器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 22:30:03