Модуль 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, которое описывает нужные вам методы.