我正在尝试获取位于以下位置的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:消息:无效的选择器:不允许使用复合类名称
我还尝试了其他方法:
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')
但是没有运气..如果有人可以帮助您,将不胜感激。谢谢
答案 0 :(得分:1)
您可以在python中使用BeautifulSoup来获取锚标签中具有特定类名(例如soup.find_all('a', attrs={'class':'yt-simple-endpoint'})
)的链接,您可以在此处find_all using css阅读更多内容
答案 1 :(得分:1)
您的选择器无效:
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')
每个类名都应以点开头:driver.find_element_by_css_selector('.yt-simple-endpoint.style-scope.ytd-comment-renderer')
但是IMHO通过ID
进行识别的最好方法是:
driver.find_element_by_id("author-text")