Как получить список URL-адресов видео с указанного c канала YouTube - PullRequest
0 голосов
/ 19 февраля 2020

Я хочу получить список URL-адресов видео с указанного c канала YouTube с Python.

Сначала я написал следующий код.

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, но не мог понять, как структурировать программу.

Ответы [ 2 ]

0 голосов
/ 19 февраля 2020

Logi c ->

Импорт необходимых библиотек.

import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

Использование Selenium. Я забираю Chrome driver.Убедитесь, что ваш chromedriver находится в том же каталоге, в котором вы запускаете скрипт.

driver = webdriver.Chrome()

Укажите URL канала Youtube.

url = input("Enter Youtube Channel URL : ")

Go в разделе видео.

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"))

Вот и все.

Минусы - требуется веб-драйвер. Медленнее, чем получать результаты напрямую из YouTube API.

0 голосов
/ 19 февраля 2020

В предлагаемом решении предполагается, что ссылка на 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-ссылки.

...