2016-01-13 2 views
3

Я хочу получить значение «data-default-src» из html ниже. Похоже, что тело находится в узле теневого корня или скрыто в исходном коде. Это видно только при использовании элемента chrome для проверки элементов, а не при выполнении ctrl + u.parse html-элементы с помощью Jsoup

<body onload="handleOnLoad();" style="margin:0;padding:0;width:100%;height:100%; 
position:relative;overflow:hidden" id="myPlayer" 
data-default-src="https://cdn.video.playwire.com/12272/videos/4483914/video-sd.mp4?hosting_id=12272"> 

Это то, что я пытался до сих пор:

Elements media = doc.select("body"); 

      for (Element links: media) 
      { 
      System.out.println((links.attr("abs:data-default-src"))); 
      } 

и это тоже:

Element body = doc.body(); 
System.out.println(body.attr("data-default-src")); 
+0

«Это видно только с помощью элемента элемента проверки хром, а не при выполнении ctrl + u». Это означает, что атрибут генерировался динамически в браузере, скорее всего, с использованием JavaScript. JSoup - это библиотека HTML, а не полный эмулятор браузера. Вам нужно будет выяснить другой способ получить значение. –

+0

@still_learning Спасибо. Любой другой извлекающий API, который вы знаете, может помочь решить проблему? – Scitech

+1

Это зависит от ваших требований и того, как генерируется атрибут. Посмотрите на [эту страницу] (https://gist.github.com/evandrix/3694955). Некоторое время назад я попробовал, HTMLUnit кажется надежным выбором. –

ответ

2

Вы можете попробовать HTMLUnit который является библиотекой, которая обеспечивает обезглавленный браузер. При этом вы можете загрузить страницу так, как если бы вы действительно обращались к ней, заставляя все javascript оценивать и добавляя динамический контент в DOM. Там вы можете использовать DOM API HTMLUnit или выбросить его в JSoup.

+0

Спасибо. Я это попробую. – Scitech