如何从特定 YouTube 频道获取视频 URL 列表

Xiǎ*_*oko 1 python youtube-api youtube-data-api

我想使用 Python 从特定的 YouTube 频道获取视频 URL 列表。

首先,我编写了以下代码。

import os
import time
import requests
import pandas as pd

API_KEY = os.environ['API_KEY']
CHANNEL_ID = 'your_searching_channel_id'

base_url = 'https://www.googleapis.com/youtube/v3'
url = base_url + '/search?key=%s&channelId=%s&part=snippet,id&order=date&maxResults=50'
infos = []
Run Code Online (Sandbox Code Playgroud)

但我不知道下一步。

我阅读了 YouTube API HELP,但我无法理解如何构建程序。

cha*_*a0s 8

逻辑 ->

导入必要的库。

import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
Run Code Online (Sandbox Code Playgroud)

使用硒。 我正在选择 Chrome 驱动程序。确保您的 chromedriver 位于您运行脚本的同一目录中。

driver = webdriver.Chrome()
Run Code Online (Sandbox Code Playgroud)

提供 Youtube 频道的网址。

url = input("Enter Youtube Channel URL : ")
Run Code Online (Sandbox Code Playgroud)

转到视频部分。

driver.get(url+"/videos")
Run Code Online (Sandbox Code Playgroud)

向下滚动到页面末尾。 因为页面在向下滚动时加载,所以我们需要注意这一点。

ht=driver.execute_script("return document.documentElement.scrollHeight;")
while True:
    prev_ht=driver.execute_script("return document.documentElement.scrollHeight;")
    driver.execute_script("window.scrollTo(0, document.documentElement.scrollHeight);")
    time.sleep(2)
    ht=driver.execute_script("return document.documentElement.scrollHeight;")
    if prev_ht==ht:
        break
Run Code Online (Sandbox Code Playgroud)

查找所有视频的链接。

links=driver.find_elements_by_xpath('//*[@id="video-title"]')
for link in links:
    print(link.get_attribute("href"))
Run Code Online (Sandbox Code Playgroud)

就是这样。

缺点 - 需要网络驱动程序。比直接从 Youtube API 获取结果要慢。