Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python &引用;驱动程序。通过“css选择器”查找“元素”;不工作。如何修复此异常?_Python_Selenium - Fatal编程技术网

Python &引用;驱动程序。通过“css选择器”查找“元素”;不工作。如何修复此异常?

Python &引用;驱动程序。通过“css选择器”查找“元素”;不工作。如何修复此异常?,python,selenium,Python,Selenium,我正在提取YouTube上流行视频的数据。我能够提取“第一个视频”的数据,但提取“第二个视频”的数据时出现异常。如何修复它 from selenium import webdriver chromedriver="C:/Users/asus/Downloads/chromedriver_win32 (2)/chromedriver" driver=webdriver.Chrome(chromedriver) driver.get("https://www.youtube.com/feed/tre

我正在提取YouTube上流行视频的数据。我能够提取“第一个视频”的数据,但提取“第二个视频”的数据时出现异常。如何修复它

from selenium import webdriver
chromedriver="C:/Users/asus/Downloads/chromedriver_win32 (2)/chromedriver"
driver=webdriver.Chrome(chromedriver)
driver.get("https://www.youtube.com/feed/trending")
print("Trending 1: ")
title1=driver.find_element_by_css_selector('#video-title')
print(title1.text)
views1=driver.find_element_by_css_selector('#metadata-line > span:nth-child(1)')
print("Views: ",(views1.text))
up_t1=driver.find_element_by_css_selector('#metadata-line > span:nth-child(2)')
print("Time: ",(up_t1.text))

second_link=driver.find_element_by_css_selector('#grid-container > ytd-video-renderer:nth-child(2)')
second_link.click()
new_second_link=driver.current_url
print(new_second_link)
driver.get(new_second_link)
#error part
#title2=driver.find_element_by_xpath('#count > yt-view-count-renderer > span.view-count.style-scope.yt-view-count-renderer').text
title2=driver.find_element_by_css_selector('#count > yt-view-count-renderer > span.view-count.style-scope.yt-view-count-renderer').text
print(title2)

您使用的css选择器是正确的。问题是由于加载页面和webdriver找不到元素而引发错误

为了克服这些问题,通常建议使用
WebDriverWait
element\u可单击

请尝试以下代码。它将返回预期结果

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

chromedriver="C:/Users/asus/Downloads/chromedriver_win32 (2)/chromedriver"
driver=webdriver.Chrome(chromedriver)
driver.get("https://www.youtube.com/feed/trending")
print("Trending 1: ")
title1=driver.find_element_by_css_selector('#video-title')
print(title1.text)
views1=driver.find_element_by_css_selector('#metadata-line > span:nth-child(1)')
print("Views: ",(views1.text))
up_t1=driver.find_element_by_css_selector('#metadata-line > span:nth-child(2)')
print("Time: ",(up_t1.text))

second_link=driver.find_element_by_css_selector('#grid-container > ytd-video-renderer:nth-child(2)')
second_link.click()
new_second_link=driver.current_url
print(new_second_link)
driver.get(new_second_link)

wait=WebDriverWait(driver,30)
title2=wait.until(expected_conditions.element_to_be_clickable((By.CSS_SELECTOR,'h1.ytd-video-primary-info-renderer yt-formatted-string'))) #driver.find_element_by_css_selector('h1.ytd-video-primary-info-renderer yt-formatted-string').text
print("Title : " + title2.text)
count=wait.until(expected_conditions.element_to_be_clickable((By.CSS_SELECTOR,'#count > yt-view-count-renderer > span.view-count.style-scope.yt-view-count-renderer')))
print("Views Count :" + count.text)
控制台的输出:

Trending 1: 
Film Theory: The Rat That Beat Thanos! (Marvel Endgame)
Views:  1.2M views
Time:  15 hours ago
https://www.youtube.com/watch?v=UkhYYwF7XaU
Title : Eurovision Song Contest 2019 - First Semi-Final - Live Stream
Views Count :1,290,319 views

什么异常?由于CSS选择器(
#count>yt view count renderer>span.view count.style scope.yt view count renderer
)不是有效的XPath,您得到了错误为“not a valid XPath expression”的异常。@Fenio NoSuchElementException:消息:没有这样的元素:无法找到元素:{“方法”:“CSS选择器”,“选择器”:“#count>yt view count renderer>span.view count.style scope.yt view count renderer”}但我复制了正确的selector@Parthav使用要添加的元素添加HTML源代码locate@Fenio谢谢你的回复。我已经找到了问题的解决办法。