Как получить или спарсить идентификатор видео Youtube?
Столкнулся с такой проблемой - пользователь вводит текст боту, и этот текст передается в запрос на поиск видео в Youtube; но перед тем как писать логику бота - я решил перепроверить и сделать ее в отдельном файле. Хочу отметить, что требуется это сделать без selenium и Youtube API !
Я отправляю запрос методом GET и хочу получить идентификатор /watch?=значение, но никаким способом парсинга мне не удается получить это значение, так как данный идентификатор загружается в динамическом скрипте. Если вывести html с помощью r.text, то поиском в консоли можно обнаружить данный идентификатор в тэге <scrtipt>...</script>(в моем случае интересует href="/watch?v=o_l4Ab5FRwM. Данные из этого тэга, можно сказать, являются преогромнейшим словарем, и разобраться в нем крайне трудно.
Также я понимаю, что bs4 не работает со скриптами, но я хочу получить значение из этого тэга:
a id="thumbnail" class="yt-simple-endpoint inline-block style-scope ytd-thumbnail" aria-hidden="true" tabindex="-1" rel="null" href="/watch?v=o_l4Ab5FRwM">
Если проверить в консоли - в дереве HTML не обнаружить ни этот class ни этот id. Приведу небольшой пример кода:
import requests
from bs4 import BeautifulSoup
r = requests.get('https://www.youtube.com/results?search_query=five+finger+death+punch')
print(r.text)
# Написал только для примера, что эти варианты не подходят!
#soup = BeautifulSoup(r.content, 'html.parser')
#sel = '#thumbnail'
#soup.select(sel).get('href')
#soup.find('a', class_='yt-simple-endpoint inline-block style-scope ytd-thumbnail')
Как мне получить данный идентификатор видео? Я так полагаю, что можно сделать это регулярным выражением, но я пока что слаб в этой теме, поэтому хочу увидеть более альтернативные варианты, но можно было бы и получить пример re. Спасибо!