我想使用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 = []
但是我不知道下一步。
我阅读了YouTube API帮助,但是我不明白如何构建程序。
提供的解决方案假定提供给driver.get()的链接是Youtube播放列表。自行修改。
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome("pathToChromeDriver")
driver.get('https://www.youtube.com/watch?v=WN-IW6wOdnI&list=PLs4hTtftqnlBOsOiQ2U1fddASTO9SlRbY')
def collectLinks():
elements = []
elems = driver.find_elements_by_xpath("//a[@href]")
print("Collecting links...")
for elem in elems:
elements.append(str(elem.get_attribute("href")))
for i in elements:
print(i)
collectLinks()
driver.quit()
其中“ pathToChromeDriver”替换为您的Chrome驱动程序路径。
其中'https://www.youtube.com/watch?v=WN-IW6wOdnI&list=PLs4hTtftqnlBOsOiQ2U1fddASTO9SlRbY'替换为您要查找所有URL链接的播放列表。
逻辑->
导入必要的库。
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
使用硒。我要安装Chrome驱动程序。请确保您的chromedriver在运行脚本的目录中。
driver = webdriver.Chrome()
提供YouTube频道的网址。
url = input("Enter Youtube Channel URL : ")
转到视频部分。
driver.get(url+"/videos")
向下滚动到页面末尾。因为页面在向下滚动时加载,所以我们需要注意这一点。
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
查找所有视频的链接。
links=driver.find_elements_by_xpath('//*[@id="video-title"]')
for link in links:
print(link.get_attribute("href"))
就是这样。
Cons-需要网络驱动程序。比直接从Youtube API获取结果要慢。