WedX - журнал о программировании и компьютерных науках

Скрипт Python для создания списка заголовков видео в плейлисте YouTube, содержащем более 100 видео.

Я использую приведенный ниже код для создания списка, содержащего заголовки видео в общедоступном плейлисте YouTube. Это хорошо работает для плейлистов, содержащих менее 100 видео. Для плейлистов, содержащих более 100 видео, в список будут добавлены названия первых 100 видео в плейлисте. Я думаю, что причина такого поведения в том, что когда мы загружаем одну и ту же страницу в браузере, загружаются первые 100 видео. Остальные видео загружаются по мере прокрутки страницы вниз. Есть ли способ получить названия всех видео из плейлиста?

from bs4 import BeautifulSoup as bs
import requests

url = "https://www.youtube.com/playlist?list=PLRdD1c6QbAqJn0606RlOR6T3yUqFWKwmX"
r = requests.get(url)
soup = bs(r.text,'html.parser')
res = soup.find_all('tr',{'class':'pl-video yt-uix-tile'})
titles = []
for video in res:
    titles.append(video.get('data-title'))

  • Я не могу сказать, какова ваша настоящая цель, но если это просто загрузить полный плейлист, знаете ли вы об инструменте/утилите на основе Python youtube-dl? Он может загрузить один видеоролик или список воспроизведения. У него есть опции для рандомизации загрузки, чтобы вы не появлялись на YouTube в качестве сборщика данных. HTH. Удачи. 05.05.2019
  • Я хотел переименовать файлы, добавив номер (серийный номер в список воспроизведения) перед каждым видеофайлом. Я уже скачал видео. В любом случае, спасибо, что рассказали о youtube-dl. Я не знал об этом. 05.05.2019

Ответы:


1

Как вы правильно заметили, загружаются только первые 100 видео. Когда пользователь прокручивает вниз вызовы ajax загрузить дополнительные видео.

Самый простой, но и самый трудоемкий способ воспроизвести вызовы ajax — использовать selenium webdriver. Вы можете найти официальную документацию по Python здесь.

05.05.2019
  • Спасибо за толчок в правильном направлении. Я попытался использовать selenium webdriver, и мне удалось создать список, содержащий названия всех видео из списка воспроизведения, даже если он содержит более 100 видео. 05.05.2019

  • 2

    Я создал следующий скрипт с помощью входных данных от Abrogans.

    Также был полезен эта суть.

    from bs4 import BeautifulSoup as bs
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    import time
    
    driver = webdriver.Firefox()
    url = "https://www.youtube.com/playlist?list=PLRdD1c6QbAqJn0606RlOR6T3yUqFWKwmX"
    driver.get(url)
    
    elem = driver.find_element_by_tag_name('html')
    elem.send_keys(Keys.END)
    time.sleep(3)
    elem.send_keys(Keys.END)
    
    innerHTML = driver.execute_script("return document.body.innerHTML")
    
    page_soup = bs(innerHTML, 'html.parser')
    res = page_soup.find_all('span',{'class':'style-scope ytd-playlist-video-renderer'})
    
    titles = []
    for video in res:
        if video.get('title') != None:
            titles.append((video.get('title')))
    
    driver.close()
    
    05.05.2019
    Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]