Модуль requests

Мне нужно получить список видео на канале https://www.youtube.com/channel/UCMpoPt5DaBcscn1eLQxLCwA/videos, но проблема в том, что видео подгружаются после загрузки страницы, а модуль requests возвращает ответ сразу после загрузки, в то время как видео не успели погрузится на сайт. Можно ли как-то сделать режим ожидание в модуле requests, чтобы подгрузился блок с видео?

Мой код:

from bs4 import BeautifulSoup as BS
import requests

response = requests.get('https://www.youtube.com/channel/UCMpoPt5DaBcscn1eLQxLCwA/videos',timeout=timeout)
html = BS(response.content,'html.parser')


last_video_html = html.select('ytd-grid-video-renderer')[0]
last_video_link = last_video_html.select('a[id="video-title"]')[0]['href']

input(last_video_link)

Ответы (1 шт):

Автор решения: biryulin04

requests получает статическую страницу, не обрабатывая на ней JS, который подгружает список видео. Он вам не подойдет. У вас есть два варианта:

  • Использовать Selenium. Это не сильно усложнит код, но замедлит процесс парсинга. Для ускорения можно отключить подгрузку картинок и шрифтов.
  • Использовать оффициальный API YouTube. Вот видео от Google Developers, которое описывает нужные вам методы.
→ Ссылка