2015-03-27 2 views
0
<div id="footer"> 
<div class="row1"></div> 
<div class="row2"> 
    <div class="content"> 
     <div class="row2col1"> 
      <div class="moduletable"> 
       <div class="custom"> 
        <p> 
         <span style="color: #ffffff;"></span> 
         <span> 
          26 
         </span> 
        </p> 
        <p></p> 

Как получить значение от второго интервала, который равен 26? Я пробовалJsoup html синтаксический анализ

Elements a = doc.select("div#footer div.row2 div.content div.row2col1 div.moduletable div.custom p"); 

      for (int i = 1; i < a.size(); i++){ 
       Element b = a.get(i); 
       if (i == 2){ 
        if(isNum(b.text().trim())){ 
         aw = b.text().trim(); 
        } 
        else { 
         aw = "oops"; 
        } 
       } 
      } 

но он не работает. Может ли кто-нибудь показать мне, как это сделать?

ответ

0

Ваш CSS запрос выбирает

<p> <span style="color: #ffffff;"></span> <span> 26 </span> </p> 
<p></p> 

так, как вы видите эти два <p> элементы, первый с

<span style="color: #ffffff;"></span> <span> 26 </span> 

и второй пустой.

Если вы хотите выбрать span элементы, которые вы должны добавить его в свой запрос как

div#footer div.row2 div.content div.row2col1 div.moduletable div.custom p span 

Кроме того, если вы знаете, что вы хотите получить второй элемент (который индекс 1, поскольку элементы индексируются 0) вас не нужен цикл, но может просто использовать a.get(1)

Так что ваш код может выглядеть следующим образом

Elements a = doc.select("div#footer div.row2 div.content div.row2col1" 
     + " div.moduletable div.custom p span"); 
//          ^^^^^---add this part 
String spanValue = a.get(1).text().trim(); 
if (spanValue.matches("\\d+")) {// I changed this condition a bit just for tests 
    aw = spanValue; 
} else { 
    aw = "oops"; 
} 
+0

Итак, я изменил запрос, и теперь я пытаюсь использовать String aw = a.get (1) .text(); но приложение будет раздавлено. Я установил эту строку в виде открытого текста. –

+0

Какую ошибку вы получаете? – Pshemo

+0

Поддельная сигнализация, все работает правильно, спасибо –