2016-09-11 4 views
2

Я пытаюсь получить форму имя class атрибут внутри сайта html страницы с помощью Jsoup Library, проблема в том, что я получаю элементы от класса, используя getElementsByClass("name") и хранить его в строковой переменной и результат грядущий как "mike andro rob banks maria gerardo louis .... и т. Д.". , но я хочу отделить отдельные имена и хранить их в массиве. следующего фрагмент кода:Извлечение строк с использованием Jsoup

public String processText(String htmlPage) { 

    Document html = Jsoup.parse(htmlPage); 
    String names = html.body().getElementsByClass("name").text(); 
    return names; 
} 

Дополнительной информации:

страница источника является html страницы и я спасаю полный HTML-код в строке, а затем обработать строку, чтобы извлечь только Элементы под class="name"

htmlPage, который я передаю в processText метод похож на следующее:

<div class="name"> 
 
\t \t \t \t \t \t \t Rob Kardashian 
 
\t \t \t \t \t \t </div> 
 
\t \t \t \t \t </div> 
 
\t \t \t \t </a> 
 
\t \t \t </div> 
 
\t \t \t \t \t <div class="channelListEntry"> 
 
\t \t \t \t <a href="/zayn_malik"> 
 
\t \t \t \t \t <div class="image"> 
 
\t \t \t \t \t \t <img src="http://cdn.posh24.com/images/:profile/014cf47ca44daf8f44a3e0720929ee327" alt="Zayn Malik"/> 
 
\t \t \t \t \t </div> 
 
\t \t \t \t \t 
 
\t \t \t \t \t 
 
\t \t \t \t \t \t \t \t \t \t <div class="info"> 
 
\t \t \t \t \t \t <div class="status-container"> 
 
\t \t \t \t \t \t \t <div class="position">4</div> 
 
\t \t \t \t \t \t \t 
 
\t \t \t \t \t \t \t \t <div class="img pos"></div> 
 
\t \t \t \t \t \t \t \t <div class="value">+12</div> 
 
\t \t \t \t \t \t \t \t \t \t \t \t \t 
 
\t \t \t \t \t \t </div> 
 
\t \t \t \t \t \t <div class="name"> 
 
\t \t \t \t \t \t \t Zayn Malik 
 
\t \t \t \t \t \t </div> 
 
\t \t \t \t \t </div> 
 
\t \t \t \t </a> 
 
\t \t \t </div> 
 
\t \t \t \t \t <div class="channelListEntry"> 
 
\t \t \t \t <a href="/kanye_west"> 
 
\t \t \t \t \t <div class="image"> 
 
\t \t \t \t \t \t <img src="http://cdn.posh24.com/images/:profile/03f352f71ffab135cd81821eb190d4832" alt="Kanye West"/> 
 
\t \t \t \t \t </div> 
 
\t \t \t \t \t 
 
\t \t \t \t \t 
 
\t \t \t \t \t \t \t \t \t \t <div class="info"> 
 
\t \t \t \t \t \t <div class="status-container"> 
 
\t \t \t \t \t \t \t <div class="position">5</div> 
 
\t \t \t \t \t \t \t 
 
\t \t \t \t \t \t \t \t <div class="img pos"></div> 
 
\t \t \t \t \t \t \t \t <div class="value">+16</div> 
 
\t \t \t \t \t \t \t \t \t \t \t \t \t 
 
\t \t \t \t \t \t </div> 
 
\t \t \t \t \t \t <div class="name"> 
 
\t \t \t \t \t \t \t Kanye West 
 
\t \t \t \t \t \t </div> 
 
\t \t \t \t \t </div> 
 
\t \t \t \t </a> 
 
\t \t \t </div> 
 
\t \t \t \t \t <div class="channelListEntry"> 
 
\t \t \t \t <a href="/kendall_jenner"> 
 
\t \t \t \t \t <div class="image"> 
 
\t \t \t \t \t \t <img src="http://cdn.posh24.com/images/:profile/066d5c02547c4357f1bc5f633c68f4085" alt="Kendall Jenner"/> 
 
\t \t \t \t \t </div>

ответ

0

вы можете просто использовать split функцию, чтобы получить массив из строки

String arr[]=names.trim().split("\\s"); 

плюс, если у вас есть пробелы и вкладки в сочетании между именем используйте

String arr[]=names.split("\\s+"); 

Update :

 ArrayList<String> name=new ArrayList<String>(); 
     for (Element output: html.body().getElementsByClass("name")) { 
      name.add(output.text()); 
      } 

example link

Выход:

enter image description here

link to convert list to array

+0

, к сожалению, это не сработало. –

+0

обратите внимание, что строка содержит имя и фамилию каждого человека. –

+0

. Пусть просто говорят, что у некоторых людей есть фамилия, а у некоторых нет или у кого-то есть первая + средняя + фамилия, тогда как вы сделаете разницу между «jhon snow robert» как единым name –

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