Как получить url на видео с помощью bs4 и requests?

У меня не получается получить ссылку на самое популярное видео через парсинг ютуб страницы. Через Селениум всё получается, но из-за открытия нового окна такой код работает медленно. Если же через request, то не работает вовсе. К примеру, я взял ссылку на страницу поиска видео Трэвиса Скотта с сортировкой по просмотрам. Вот так код выглядит через Селениум:

from selenium import webdriver
from bs4 import BeautifulSoup
URL = "https://www.youtube.com/results?search_query=Travis+Scott&sp=CAM%253D"
driver = webdriver.Chrome()
driver.get(URL)
htm = driver.page_source
soup = BeautifulSoup(htm, "html.parser")
ttl = soup.find('a',
        attrs={"class": "yt-simple-endpoint style-scope ytd-video-renderer", "id": "video-title"})
print(ttl.get('href'))

А так через requests:

import requests
from bs4 import BeautifulSoup
URL = "https://www.youtube.com/results?search_query=Travis+Scott&sp=CAM%253D"
html = requests.get(URL)
soup = BeautifulSoup(html.text, "html.parser")

Код не дописан, т.к. использование методов find или find_all приводит к выводу None. Я заметил, что при использовании requests.get() код страницы "комкается" и названия классов отличаются от тех, что получаются при использовании Селениума.

Как мне вытащить первую ссылку на видео? В первом коде она имеет класс href, во втором же уже url.

Заранее, спасибо.


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