2015-06-06 6 views
0

Это не просто. Я разбор страницы (http://www.catedralaltapatagonia.com/invierno/partediario.php?default_tab=0) мне нужно данные Довольных в таблице внутри другой таблицы, но я не могу получить доступ, потому что я получаю Allways ошибку об индексе Неверного индексаJsoup Получить данные из таблицы внутри таблицы

Мне нужно это значение

cells i need

Эти ячейки находятся внутри td внутри tr, внутри таблицы, и эта таблица находится внутри другой таблицы. каждый столбец ячеек находится внутри div id «meteo_info», и внутри каждого td есть одно и то же имя div id.

Я попробовал этот путь без успеха

 Elements base1=document.select("div#pd_foto_fondo"); 
      Elements base2 = base1.select("table"); 
      Elements base3 = base2.select("tr"); 
      Elements base4 = base3.select("table"); 
      Elements base5 = base4.select("tr"); 
      Elements base6 = base5.select("td"); 
      Element base7 =base6.get(0); 
      Element div1 = base7.getElementById("meteo_info"); 
      Elements tables1 = div1.getElementsByTag("table"); 
      Element table1 = tables1.get(0); 

      String text2 = table1.getElementsByTag("tr").get(3).getElementsByTag("td").get(2).text(); 

Я использую этот код внутри Asyntask doInBackground

ответ

1

Первая вещь, при загрузке веб-страницы в вашем приложении, измените USER AGENT поле, чтобы соответствовать браузер вы используете на своем компьютере. Уверяю вас, вы получите точно такую ​​же страницу в своем приложении с одинаковыми тегами.
Я использую FF, но если вы используете другой браузер, он должен быть почти таким же -
открыть инструменты для разработчиков (в FF это F12), выбрать инспектор и выбрать элемент выбора элементов (FF - самый левый инструмент). После этого выберите один из элементов, который вы хотите получить, скажем, Sensación Térmica SECTOR BASE. Браузер выделит код, содержащий этот элемент.
Наведите мышку на высокопоставленный код, щелкните правой кнопкой мыши и выберите команду Copy unique selector.
Затем вы можете использовать этот код, чтобы получить элемент -

Elements e = doc.select("#pd_foto_fondo > table:nth-child(5) > tbody:nth-child(1) > tr:nth-child(2) > td:nth-child(1) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(1) > td:nth-child(1) > div:nth-child(1) > div:nth-child(3) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(4) > td:nth-child(3)"); 

И вы можете получить значение по

e.text(); 

Теперь, сделайте это для всех элементов, вам нужно, и вы найдете шаблон - есть три таблицы (СЕКТОР БАЗ, СЕКТОР Intermedio, СЕКТОР SUPERIOR) и их идентификатор находится на 7-м месте с конца (не легко видеть, слишком длинная линию ...) -

#pd_foto_fondo > table:nth-child(5) > tbody:nth-child(1) > tr:nth-child(2) > td:nth-child(1) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(1) > td:nth-child(1) > div:nth-child(1) > div:nth-child(3) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(4) > td:nth-child(3) 
#pd_foto_fondo > table:nth-child(5) > tbody:nth-child(1) > tr:nth-child(2) > td:nth-child(1) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(1) > td:nth-child(2) > div:nth-child(1) > div:nth-child(3) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(4) > td:nth-child(3) 
#pd_foto_fondo > table:nth-child(5) > tbody:nth-child(1) > tr:nth-child(2) > td:nth-child(1) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(1) > td:nth-child(3) > div:nth-child(1) > div:nth-child(3) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(4) > td:nth-child(3) 

А также каждая строка имеет другой идентификатор, на этот раз это второй с конца. Sensación TERMICA является

#pd_foto_fondo > table:nth-child(5) > tbody:nth-child(1) > tr:nth-child(2) > td:nth-child(1) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(1) > td:nth-child(1) > div:nth-child(1) > div:nth-child(3) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(4) > td:nth-child(3) 

и Viento является

#pd_foto_fondo > table:nth-child(5) > tbody:nth-child(1) > tr:nth-child(2) > td:nth-child(1) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(1) > td:nth-child(1) > div:nth-child(1) > div:nth-child(3) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(5) > td:nth-child(3) 

(обратите внимание на 4 и 5 в двух последних строках).
Вы можете запустить эти селектора с двумя вложенными петлями for и получить всю необходимую информацию.

+0

Действительно большой !!! Я могу представить себе что-то настолько простое, это меняет свой путь, чтобы увидеть Jsoup. Спасибо !, отлично работает –

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