使用jsoup从带有中断的表中提取文本

时间:2014-05-01 19:36:29

标签: java android html parsing jsoup

有些人知道如何用Jsoup提取这些文本吗?

<TR> 
    <TD bgColor=#ffa55c><B> 
      The first text I want.      </B><BR>
      <BR>
      The second text I want      <BR>
    </TD>
</TR>

我可以通过以下方式获得第一个:

Element element = doc.select("tr td:eq(1) b").get(1);
element.text();

但我没有得到第二个:(

2 个答案:

答案 0 :(得分:1)

您需要关闭表格单元格标记TD才能使HTML格式正确

<table>
<TR> 
    <TD bgColor=#ffa55c><B> 
      The first text I want.      </B><BR>
      <BR>
      </TD><TD> <!-- add this -->
      The second text I want      <BR>
    </TD>
</TR>
</table>

否则JSoup会考虑第一个&amp;第二个单元格为一个而get将抛出IndexOutOfBoundsException,然后您可以简单地使用

Element element = doc.select("td").get(2);

答案 1 :(得分:1)

使用您提供给我们的表数据,您可以轻松地一举获得所有文本:

String html = "<TR><TD bgColor=#ffa55c><B>The first text I want.</B><BR><BR>The second text I want<BR></TD></TR>";

Document doc = Jsoup.parse(html);

System.out.println("test: " + doc.text());

输出:

test: The first text I want. The second text I want

我认为您需要将您的选择限制为TR并忽略其后的所有内容,因此请将其设置为

// get the TRs
Elements elements = doc.select("tr");

// iterate through the TRs
for (Element element: elements){
    System.out.println(element.text());    
}