2016-03-30 2 views
0

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

<table class="fruit-vegetables"> 
    <thead> 
    <th>Fruit</th> 
    <th>Vegetables</th> 
    </thead> 
    <tbody> 
    <tr> 
     <td> 
     <b> 
      <a href="https://en.wikipedia.org/wiki/Apple" title="Apples">Apples</a> 
     </b> 
     </td> 
     <td> 
     <a href="https://en.wikipedia.org/wiki/Carrot" title="Carrots">Carrots</a> 
     </td> 
    </tr> 
    <tr> 
     <td> 
     <i> 
      <a href="https://en.wikipedia.org/wiki/Orange_%28fruit%29" title="Oranges">Oranges</a> 
     </i> 
     </td> 
     <td> 
     <a href="https://en.wikipedia.org/wiki/Pea" title="Peas">Peas</a> 
     </td> 
    </tr> 
    </tbody> 
</table> 

Я хочу, чтобы извлечь данные из первый столбец «Плод» с использованием Jsoup. Таким образом, результат должен быть:

Apples 
Oranges 

Я написал программу, экстракт из которых является следующая:

//In reality, it should be connect(html).get(). 
//Also, suppose that the String `html` has the full source code. 
Document doc = Jsoup.parse(html); 

Elements table = doc.select("table.fruit-vegetables").select("tbody").select("tr").select("td").select("a"); 

for(Element element : table){ 
    System.out.println(element.text()); 
} 

Результатом этой программы является:

Apples 
Carrots 
Oranges 
Peas 

I знайте, что что-то не работает хорошо, но я не могу найти свою ошибку. Все остальные вопросы здесь, в Stack Overflow, не помогли решить мою проблему. Что мне нужно сделать?

ответ

0

Вы, кажется, ищет

Elements el = doc.select("table.fruit-vegetables td:eq(0)"); 
for (Element e : el){ 
    System.out.println(e.text()); 
} 

От http://jsoup.org/cookbook/extracting-data/selector-syntax вы можете найти описание :eq(n), как

:eq(n): найти элементы, родственный индекс равен n; например form input:eq(1)

в этом случае So td:eq(0) мы выбираем каждый td, который является первым потомком своего родителя (tr).

+0

Ваш ответ помог мне решить мою проблему. Большое спасибо. – George

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