Я хотел написать что-то, что вернет мне продолжительность видеоролика ссылки на YouTube. Итак, я нашел requests
и lxml
и начал с руководства this.Неспособность получить длительность видео youtube с помощью xpath
Вот установка:
import requests
from lxml import html
url = 'https://www.youtube.com/watch?v=EN8fNb6uhns'
page = requests.get(url)
tree = html.fromstring(page.content)
Тогда я пытаюсь использовать XPath, чтобы получить срок, но он не работает. Попытка получить продолжительность:
tree.xpath('//span[@class="ytp-time-duration"]/text()')
возвращает пустой список. Но когда я попытаюсь получить название (в качестве теста) с:
tree.xpath('//h1[@class="watch-title-container"]/span/text()')
это работает. Когда я использую инспектировать скопировать XPath от длительности элемента ничего не возвращается:
tree.xpath('/html/body/div[2]/div[4]/div/div[4]/div[2]/div[2]/div/div[24]/div[2]/div[1]/div/span[3]')
Когда я сделать то же самое за титул он снова работает.
Что происходит?
Одно решение для вашей проблемы может быть обезглавленный браузер или WebKit, как PhantomJS - который может выполнить JS. –