从元素中抓取文本时出现问题



我想在yt 上提取视频的标题

这是我想出的代码:

from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

def get_title():
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '/html/head/title')))
element = driver.find_element_by_xpath('/html/head/title').text
return str(element)
def start(word):
driver.get('https://www.youtube.com/results?search_query='+ word)
driver.find_element_by_xpath('/html/body/ytd-app/div/ytd-page-manager/ytd-search/div[1]/ytd-two-column-search-results-renderer/div/ytd-section-list-renderer/div[2]/ytd-item-section-renderer/div[3]/ytd-video-renderer[1]/div[1]/ytd-thumbnail/a').click()
word = input()
start(word)
title = get_title()
print(title)

但我只是收到一条空白短信。。。有人能帮我吗

def get_title():
element=WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '/html/head/title'))).get_attribute('textContent')
return str(element)

这将是对代码的简单修复,以获得一个不可见的元素。但是您应该使用driver.title来获取title值。

当你用搜索加载youtube时,标题是youtube-搜索文本,几秒钟后youtube播放第一个视频。所以标题在几秒钟内就变了。

试试这个:

def get_title():
time.sleep(5)
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '/html/head/title'))) 
return driver.find_element_by_xpath('/html/head/title').get_attribute("innerHTML")

相关内容

  • 没有找到相关文章

最新更新