我想从下面的youtube视频中获取成绩单(我知道有一种方法可以获得cc字幕,如果有的话,但通常不会这样。)
我使用phantomjs
在python中执行此操作。
url = 'https://www.youtube.com/watch?v=wOn8xawC-HQ'
phantom_driver = webdriver.PhantomJS(executable_path="./phantomjs-2.1.1- macosx/bin/phantomjs")
phantom_driver.get(url)
只有在点击"更多..."我可以访问的按钮:
phantom_driver.find_element_by_id('action-panel-overflow-button').click()
...这会创建一个div
复合类"yt-uix-menu-content yt-ui-menu-content yt-uix-kbd-nav yt-uix-menu-content-hidden"
,其中包含一个由<ul>
组成的菜单,其中包含4个元素。
我需要点击这四个元素中的一个来打开成绩单框(具体来说,我需要点击带有复合类"yt-ui-menu-item has-icon yt-uix-menu-close-on-select action-panel-trigger action-panel-trigger-transcript"
的按钮)。
然而,正在运行
phantom_driver.find_element_by_class_name('action-panel-trigger-transcript').click()
不起作用,因为该元素似乎仍然隐藏(Element is not currently visible and may not be manipulated
)。
我相信我需要的是点击&#34;更多......&#34;按钮,然后直接单击打开的菜单。
我在选择的菜单上查看this post,在点击后使用html查看了this one。也没有解决我的问题。
我的脚本中缺少什么?我是否需要&#34;刷新&#34;点击后检索到的html?
答案 0 :(得分:0)
“action-panel-overflow-button”是按钮ID而不是名称。 您可以通过它的xpath
单击此元素这很好用:
phantom_driver.find_element_by_xpath('//*[@id="action-panel-overflow-button"]').click()
phantom_driver.find_element_by_xpath('//*[@class="yt-ui-menu-item has-icon yt-uix-menu-close-on-select action-panel-trigger action-panel-trigger-transcript"]').click()