Собрать ссылки со страницы с использованием фильтров с помощью selenium
Мне нужно спарсить список ссылок на видео ютуб используя запрос который мне нужен и фильтр
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
import time
name = 'hello world'
driver = webdriver.Firefox()
driver.get('https://www.youtube.com')
id_serth = driver.find_element(By.NAME, "search_query")
id_serth.send_keys(name)
button_serth = driver.find_element(By.ID, "search-icon-legacy")
time.sleep(1)
button_serth.click()
time.sleep(3)
button_filtr = driver.find_element(By.CLASS_NAME ,"ytd-toggle-button-renderer")
button_filtr.click()
time.sleep(3)
button_filtrtode=driver.find_element(By.CLASS_NAME, "ytd-search-filter-renderer")
button_filtrtode.click()
#linkvideo2 = driver.find_element(By.ID, "video-title").get_attribute("href")
time.sleep(3)
urltek = driver.current_url
linkvideo2 = driver.find_element(By.XPATH, '//*[@id="video-title"]').get_attribute('href')
print (linkvideo2)
print (urltek)
Получаю ответ None
p.s только не давно начал изучать selenium не бейте)
None
https://www.youtube.com/results?search_query=hello+world&sp=EgIIAQ%253D%253D
Ответы (1 шт):
Автор решения: Tester
→ Ссылка
В строке:
linkvideo2 = driver.find_element(By.XPATH, '//*[@id="video-title"]').get_attribute('href')`
в XPATH вместо //*[@id="video-title"] поставьте //a[@id="video-title"].
Тогда вы будете получать в переменную linkvideo2 ссылку на самое верхнее видео. Ну а чтобы получить все ссылки можно сделать цикл.
Например:
videos_list = driver.find_elements(By.XPATH, '//a[@id="video-title"]')
for video in videos_list:
print(video.get_attribute('href'))
Только учитывайте, что это будут не все видео по вашему запросу, а только те, которые в данный момент отображаются на странице.