下記のYouTubeビデオからトランスクリプトを取得したいと思います(使用できる場合はccキャプションを取得する方法がありますが、しばしばそうではありません)。Pythonのphantomjsで動的に読み込まれたメニューをクリックする
私は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)
転写物は唯一私がアクセスできる「もっと...」ボタンをクリックした後に表示されます。これは、A含む化合物クラス"yt-uix-menu-content yt-ui-menu-content yt-uix-kbd-nav yt-uix-menu-content-hidden"
とdiv
を作成します...
phantom_driver.find_element_by_id('action-panel-overflow-button').click()
メニューには、4つの要素からなる<ul>
が含まれています。
これらの4つの要素のいずれかをクリックして転写ボックスを開く必要があります(具体的には、化合物クラス"yt-ui-menu-item has-icon yt-uix-menu-close-on-select action-panel-trigger action-panel-trigger-transcript"
のボタンをクリックする必要があります)。要素は、(Element is not currently visible and may not be manipulated
)まだ隠されているようだので、
しかし、
phantom_driver.find_element_by_class_name('action-panel-trigger-transcript').click()
を実行することはできません。
「もっと...」ボタンをクリックして、開いているメニューを直接クリックする必要があると思います。
選択したmenuesでthis post、そしてクリック後にhtmlを使用するとthis oneと表示されました。どちらも私の問題を解決しませんでした。
スクリプトには何が欠けていますか?クリック後に取得したhtmlを「更新」する必要はありますか?