Парсер видео с ютуба
Есть такая задача: сделать скрипт на пайтон, который после выхода каждого ролика на канале, делал определенные действия(что угодно), как это лучше всего реализовать? Лично я пробовал использовать beautyful soup, но так и не разобрался, как правильно спарсить url нового видео, и принципе получить список видео P.S. если можно, приложите некоторый код пожалуйста
Ответы (1 шт):
Рассмотри некоторый канал. Каждое видео это отдельный ytd-grid-video-renderer c классом "style-scope ytd-grid-renderer"
Название видео содержится в атрибуте title тега с id = "video-title"
В href содержится ссылка без домена (/watch?v=HQxZaeGxwQs)
Т.к. содержание страницы подгружается "динамический", через javascript, а вы новичек, я бы порекомендовал использовать связку Selenium + geckodriver + BeautifulSoup. Selenium зайдёт на страницу, выполнить javascript-ы и выгрузит полученый html - код в BS. Пример кода:
from selenium import webdriver
from bs4 import BeautifulSoup as BS
URL = "" #Ваш урл
driver = webdriver.Chrome()
driver.get(URL)
time.sleep(10) #Можно ждать до загрузки страницы, но проще подождать 10 секунд, их хватит с запасом
html = driver.page_source
Теперь в переменной html код нашей страницы. Найдём в нем все видеоролики и названия к ним:
soup = BS(html, "html.parser")
videos = soup.find_all("ytd-grid-video-renderer",{"class":"style-scope ytd-grid-renderer"})
for video in videos:
a = video.find("a",{"id":"video-title"})
name = link.get_text()
link = "https://www.youtube.com/" + a.get("href")
print(name, link)
Этот код выведет поочередно ссылки на все видео и их названия. Я прибавил к ссылке https://www.youtube.com/ , так как на youtube ссылке к роликам указаны без домена.

