2015-06-03 5 views
1

Это, наверное, немой вопрос, но я не могу это понять. Я пытаюсь разобрать html-вывод со страницы: http://meteo.uwb.edu.pl/Jsoup, parse html table

Так что в основном мне нужно извлечь значения из таблицы, с левой стороны (синий текст) в виде клавиш (заголовков) и с правой стороны (коричневый текст) в качестве значений. Кроме того, заголовки заголовков («Aktualna pogoda/Погодные условия:»)

Мое намерение состоит в том, чтобы получить таблицу html из вывода html и проанализировать ее строку, но я не могу понять это, потому что вывод html довольно сложный. Я исхожу из этого:

doc = Jsoup.connect("http://meteo.uwb.edu.pl/").get(); 
Elements tables = doc.select("table"); 
for (Element row : table.select("tr")) 
{ 
    Elements tds = row.select("td:not([rowspan])"); 
    System.out.println(tds.get(0).text() + "->" + tds.get(1).text()); 
} 

Но все же мой результат беспорядок. У вас есть идеи, как правильно разобрать его?

ответ

3

ключи данные из первой таблицы, могут быть получены с помощью этого кода:

doc.select("table").get(1).select("tbody").get(1).select("tr").get(1).select("td").get(0).select("b") 

и значение этим:

doc.select("table").get(1).select("tbody").get(1).select("tr").get(1).select("td").get(1).select("b") 

для второй таблицы

doc.select("table").get(2).select("tbody").get(0).select("tr").get(1).select("td").get(0).select("b") 

и

doc.select("table").get(2).select("tbody").get(0).select("tr").get(1).select("td").get(1).select("b") 
+0

Спасибо, ваша душа выглядит намного лучше, чем моя, я проверю ее – user1209216

0

мне удалось это так:

doc = Jsoup.connect("http://meteo.uwb.edu.pl/").get(); 
Elements tables = doc.select("td"); 
Elements headers = tables.get(2).select("b"); 
Elements vals = tables.get(3).select("b"); 
Map all = new HashMap(); 

for (int i=0;i<headers.size() ; i++) all.put(headers.get(i).text(),vals.get(i).text()); 

Это, кажется, хорошо.