JSoup Разбор проблем - PullRequest
       2

JSoup Разбор проблем

0 голосов
/ 12 марта 2012

Я работаю над приложением Android, которое анализирует веб-сайт, но не могу заставить Jsoup работать.

Я пытаюсь разобрать этот HTML:

Вот картинка

Мой код только сейчас:

Document doc = null;
      try{
     doc = Jsoup.connect("URL").get();
      Elements tds = doc.select("table.tr>td");

     for (Element td : tds) {
       String tdText = td.text();
       System.out.println(tdText);
     }
    } 

На данный момент он ничего не возвращает, но если я напечатал 'doc', он вернет весь сайт.

Я пытаюсь извлечь следующую информацию: Drower, E.S. (Этель Стефана), леди, род. 1879, с или без

Но я не могу сшить, чтобы заставить его работать.

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 12 марта 2012

Вы ошиблись в селекторе: он выбирает td потомков элемента table с классом tr, в то время как вы, вероятно, хотите td ячеек в tr строках в table.Я полагаю, что вы можете получить их, просто используя "td" в качестве селектора.

Тем не менее, это слишком обобщенно, поскольку в нем будут выбраны все ячейки таблицы.Если необходимая ячейка всегда является третьей ячейкой в ​​строках этой таблицы, вы можете уточнить селектор, чтобы выбрать только такие: "td:eq(2)".Вы действительно должны разбираться в селекторах JSoup и немного поэкспериментировать, чтобы увидеть, насколько вы можете ограничить данные, извлеченные из документа, только теми элементами, которые вам действительно нужны.

Чтобы получить текст после элемента <script> в четвертой ячейке, вы можете использовать что-то в следующем фрагменте кода:

Element td = doc.select("td:eq(3)").first();
System.out.println(td.text());

, поскольку из моего небольшого эксперимента кажется, что код JavaScript внутри <script>теги пропускаются при запросе текста элемента, который содержит один из них.

Вы бы использовали цикл for вместо first, поскольку четвертых ячеек столько же, сколько строк вваш документ, и у вас их много.

...