刮刮youtube时找不到元素

时间:2017-11-03 01:47:14

标签: python selenium web-scraping

我正在尝试从任何视频链接中截取YouTube视图。我尝试使用selenium驱动程序捕获元素但由于某种原因我无法捕获它.Below是我使用的代码:

driver=webdriver.chrome()
driver.get("https://www.youtube.com/watch?v=F-eMt3SrfFU")
driver.find_element_by_id("count").text
driver.find_element_by_id("watch-view-count").text

我无法捕捉此链接上的元素。我在这里做错了吗? 这是一个youtube电影链接,我想在链接上获取视图

3 个答案:

答案 0 :(得分:2)

get()元素无法立即获得后可能就是这种情况。您可以使用以下示例等等。

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


driver=webdriver.chrome()
driver.get("https://www.youtube.com/watch?v=F-eMt3SrfFU")
element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "count"))) # 10 seconds implicit wait
print element.text 

答案 1 :(得分:1)

我不确定为什么id = count不起作用。有可能与yt-view-count-renderer标签有一些奇怪的交互。我测试了CSS选择器span.view-count,它运行得很好。

顺便说一句,您可以使用$$()在Chrome中的devtools中测试您的CSS选择器,例如$$("span.view-count")$$()等同于driver.find_elements_by_css_selector()

有关此命令和其他命令的更多详细信息,请使用devtools,请参阅this link

答案 2 :(得分:0)

我建议您稍微详细一点,而不是使用code定位节点,我们可以定位innerHTML,即amt标记,如下所示:

id("count")