Это будет работать:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup
driver_path = r'C:/Users/Me/Chrome Web Driver/chromedriver.exe'
driver_path = r'D:\Programming\utilities\chromedriver.exe'
page_url = "https://www.youtube.com/watch?v=TQG7m1BFeRc"
driver = webdriver.Chrome(driver_path)
driver.get(page_url)
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="owner-name"]/a')))
driver.execute_script('window.scrollTo(0, 768);')
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'vote-count-left')))
html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')
result = [element.text.strip() for element in soup.find_all('span', {'id': 'vote-count-left'})]
result
Выход:
['1.9K', '153', '36', '340', '474', '1.5K', '296', '750', '0', '18', '2K', '20', '17', '8', '192', '459', '56', '10', '0', '19']
Это на самом деле более сложно, чем казалось на первый взгляд, потому что YouTube не загружает раздел комментариев до тех пор, пока вы фактически не прокрутите вниз. Поэтому мне пришлось включить логику, чтобы дождаться полной загрузки страницы и прокрутить вниз, а затем подождать, пока комментарии не загрузятся.
Кроме того, вы должны были искать span
, а не div
- это было причиной того, что ваш исходный запрос ничего не нашел.