2014-02-01 3 views
0

Я разбираю wikipedia в Android с помощью Jsoup. Я хочу, чтобы получить «Seccion Sur-Норт» внутри этой части HTML:Jsoup parse: получение текста от Element, не работающего в Android

<div class="thumb tright"> 
    <div class="thumbinner" style="width:302px;"> 
     <a href="//commons.wikimedia.org/wiki/File:Cheops-Pyramide.png" class="image"> 
      <img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/6/60/Cheops-Pyramide.png/300px-Cheops-Pyramide.png" width="300" height="227" class="thumbimage" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/6/60/Cheops-Pyramide.png/450px-Cheops-Pyramide.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/6/60/Cheops-Pyramide.png/600px-Cheops-Pyramide.png 2x"> 
     </a> 
     <div class="thumbcaption"> 
       <div class="magnify"> 
       <a href="/wiki/Archivo:Cheops-Pyramide.png" class="internal" title="Aumentar"> 
        <img src="//bits.wikimedia.org/static-1.23wmf10/skins/common/images/magnify-clip.png" width="15" height="11" alt=""> 
       </a> 
       </div> 
       Sección Sur-Norte. <--> Text I want to scrapp 
      </div> 
    </div> 
</div> 

Я получаю выбранный выбранный «thumbinner» как элемент. Я пытаюсь получить «Seccion Sur-Норт», выполнив:

Elements thumbCaption = thumbinner.select("div[class*=thumbcaption]"); 
Element myThumbCaption = thumbCaption.first(); 
Log.d("", "Thumbcaptions number of elements: " + thumbCaption.size()); 
Log.d("", "MyThumbcaption: text: " + aver.text()); 

Но в журналах я получаю, что thumbcaption имеет 8 элементов (элементы все «» thumbcaption в документе после этой точки). И я получаю, чем текст MyThumbcaption - это весь текст в документе после этого).

Как я могу отказаться от «Sección Sur-Norte»?


ДОПОЛНИТЕЛЬНО:

Я получаю thumbinner элемент из IMG имя, выполнив:

Elements imgs = doc.select("img[src*=" + name + "]"); 
Element img = imgs.first(); // Image selected 
Element parentCaption = img.parent(); 
Element thumbinner = parentCaption.parent(); 

ответ

0

Попробуйте использовать метод ownText() на thumbcaption дел. Он получает текст, принадлежащий только элементу, игнорируя любой текст, принадлежащий его дочерним элементам.

Пример:

Element myThumbCaption = thumbCaption.first(); 
System.out.println(myThumbCaption.ownText()); 

Должен ли выход:

Sección Sur-Norte. 

Вы можете прочитать больше об этом методе here.

+0

Не работает. Это невероятно, но это пустая строка. Я начинаю думать, что Jsoup работает не очень хорошо в Android! – pozuelog

+0

Он работает для меня, но только когда я использую HTML, который вы поставили. Если вы проанализируете реальный URL-адрес, который, как я полагаю, вы делаете, 'thumbCaption.first()' вернет неправильный элемент. Вы хотите использовать 'thumbCaption.get (1)' для получения правильного элемента. Также обратите внимание, что вы должны знать, что сайты реагируют на разные клиенты, поэтому может быть хорошей идеей установить агент пользователя по-разному при подключении к URL-адресу. –

Смежные вопросы