Подскажите правильно направление. Использую Jsoup для парсинга странницы на youtube. Столкнулся со следующей проблемой, что не могу отловить "длительность" ролика. Видео загружается после того как страница загрузилась. Условия таковы, что использовать Youtube API нельзя. Спасибо.
Document doc = Jsoup.connect(url)
.userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6")
.header("Accept-Language", "en")
.timeout(60000)
.ignoreContentType(true)
.get();
String durationSt = doc.select("span[class='ytp-time-duration']").text();
System.out.println("длительность ролика: " + durationSt);
Дело в том, что указанного span[class='ytp-time-duration'] в самом документе не существует. Он создается JavaScript, который исполняется браузером после загрузки страницы. Библиотек JSOUP JavaScript не выполняет и поэтому вы не сможете найти эти данные на в документе.
Вы можете:
Использовать Selenium - он полностью имитирует действия пользователя и выполняет JavaScript, то есть вы сможете найти именно эти данные.
Посмотреть как выглядит документ без запуска JavaScript и поискать эти данные в нем. Скорей всего там они выглядят примерно так
<span class="accessible-description" id="description-id-122142">
- Duur: 36:05.
</span>
Пробую разобраться с selenium, но всё равно не выходит пробую так:
WebDriver driver = new HtmlUnitDriver();
driver.get("https://www.youtube.com/watch?v=XnpKHQwJS4k");
WebElement element = driver.findElement(By.xpath("//span[@class='ytp-time-duration']"));
Что нужно ещё сделать? Selenium ругается, что Unable to locate a node.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости