如何使用python / selenium通过css选择器查​​找元素

我正在尝试获取位于以下位置的 youtube 频道的链接:


<a id="author-text" class="yt-simple-endpoint style-scope ytd-comment- 

renderer" href="/channel/UCUSy-h1fPG1L6X7KOe70asA"> <span class="style- 

scope ytd-comment-renderer">Jörgen Nilsson</span></a>

所以在上面的例子中,我想选择“/channel/UCUSy-h1fPG1L6X7KOe70asA”。到目前为止,我已经尝试了很多选择,但都没有奏效:


driver = webdriver.Chrome('C:/Users/me/Chrome Web Driver/chromedriver.exe')

api_url="https://www.youtube.com/watch?v=TQG7m1BFeRc"

driver.get(api_url)

time.sleep(2) 

div = driver.find_element_by_class_name("yt-simple-endpoint style-scope ytd-comment-renderer")

但我收到以下错误: InvalidSelectorException: Message: invalid selector: Compound class names not allowed


我还尝试了其他方法:


div = driver.find_elements_by_xpath("yt-simple-endpoint style-scope ytd-comment-renderer")


div = driver.find_element_by_class_name('yt-simple-endpoint style-scope ytd-comment-renderer')


div=driver.find_element_by_css_selector('.yt-simple-endpoint style-scope ytd-comment-renderer').get_attribute('href')

但没有运气..如果有人可以帮忙,将不胜感激。谢谢


胡说叔叔
浏览 222回答 2
2回答

皈依舞

您的选择器无效:driver.find_element_by_class_name("yt-simple-endpoint style-scope ytd-comment-renderer")您不能将多个类名传递给find_element_by_class_name方法。你可以试试driver.find_element_by_class_name("ytd-comment-renderer")driver.find_elements_by_xpath("yt-simple-endpoint style-scope ytd-comment-renderer")这不是正确的 XPath 语法。你可能是说driver.find_elements_by_xpath("//*[@class='yt-simple-endpoint style-scope ytd-comment-renderer']")driver.find_element_by_css_selector('.yt-simple-endpoint style-scope ytd-comment-renderer')每个类名都应该以点开头:&nbsp;driver.find_element_by_css_selector('.yt-simple-endpoint.style-scope.ytd-comment-renderer')但恕我直言,通过ID以下方式识别的最佳方式:driver.find_element_by_id("author-text")

繁华开满天机

您可以在 python 中使用 BeautifulSoup 来获取具有特定类名的锚标记中的链接,就像soup.find_all('a', attrs={'class':'yt-simple-endpoint'})您可以在此处使用 css find_all阅读更多内容
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python