Хорошо, во-первых, вам не нужен Selenium. Селен очень редко бывает нужен. Даже с вызовами javascript / ajax. Если вам когда-либо понадобятся такие глубокие вызовы ajax, вам просто нужно будет получать ключи GET / POST XSFR-Token взад и вперед, пока вы не получите нужные данные. Selenium действительно тяжелый, раздутый и медленный по сравнению с простыми HTTP-вызовами через запросы. Избегайте этого, когда можете. Если вы полностью застряли и не знаете, как перемещаться по ajax -post / request токенам, то обязательно используйте его. Лучше что-то, чем ничего.
Теперь причина, по которой вы не получаете желаемого ответа, заключается в том, что ваш браузер и пакет python -запросов - это два совершенно разных ответа. Так что с самого начала вы даже не можете ориентироваться, куда идете, потому что смотрите не на ту карту. Браузер имеет свою собственную карту, а пакет запросов имеет совершенно другую карту. Вот где пакет PPRINT очень удобен (фото ниже). PPRINT помогает вам увидеть ответ, который вы получаете, более четким, отформатировав текст в более чистой структуре.
Наконец, я использую Jupyter Notebook от Anaconda, потому что он позволяет мне работать с фрагментами кода одновременно, без необходимости запустить всю программу Если вы еще не используете Jupyter Notebooks, я предлагаю вам дать ему go. Это поможет вам увидеть, как все работает с частями вашего вывода, «замороженными во времени».
Желаем удачи! Надеюсь, вы не слишком расстроились. Это все требует времени.
Вот рабочий процесс, который я использовал для решения вашей проблемы:
from bs4 import BeautifulSoup
import requests
import pprint as pp
url = "https://www.youtube.com/watch?v=hHW1oY26kxQ"
response = requests.get(url, headers={'User-Agent':USER_AGENT})
soup = BeautifulSoup(response.text, 'lxml')
for div in soup.find_all("div", {"id": "watch7-user-header"}):
for a in div.find_all("a"):
continue
print(a["href"])