如何从JAVA中的html文件中获取特定数据

时间:2016-09-30 11:09:27

标签: java html

我有一个包含2k +代码行的html文件,如下所示:

< tr>
  <td class="name">Abkhazia</td>
  <td>Asia<br>
    <small>(Central West)</small>
  </td>

  <td>Sukhumi</td>
  <td>Georgian lari;<br>Russian ruble</td>

  <td class="numeric">216,000</td>
  <td class="numeric">8,600</td>
  <td class="numeric">25</td>
  <td class="numeric">-</td>
  <td class="numeric">-</td>
  <td class="numeric">-</td>
  <td class="numeric">-</td>
< /tr>

我需要提取以下数据: 列表中的Country_NameCapital_CityPopulationwhich are 1'st3'rd5'th <td> content < /td>,用于下一个国家/地区。< / p>

怎么做?我尝试了许多想法,例如使用Jsoup:

public static String html2text(String html) {
  return Jsoup.parse(html).text();
}

但这似乎还不够,而< td> Location < /td>列表中的第2个或货币(列表中第4个相同的问题)可能包含多个单词。

1 个答案:

答案 0 :(得分:2)

以下代码段使用Jsoup提取标记(取自Extract Tags from a html file using Jsoup):

public class JsoupDepthFirst {

    private static String htmlTags(Document doc) {
        StringBuilder sb = new StringBuilder();
        htmlTags(doc.children(), sb);
        return sb.toString();
    }

    private static void htmlTags(Elements elements, StringBuilder sb) {
        for(Element el:elements) {
            if(sb.length() > 0){
                sb.append(",");
            }
            sb.append(el.nodeName());
            htmlTags(el.children(), sb);
            sb.append(",").append(el.nodeName());
        }
    }

    public static void main(String... args){
        String s = "<html><head>this is head </head><body>this is body</body></html>";
        Document doc = Jsoup.parse(s);
        System.out.println(htmlTags(doc));
    }
}