我有一个包含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_Name
,Capital_City
,Population
,which are 1'st
,3'rd
和5'th
<td> content < /td>
,用于下一个国家/地区。< / p>
怎么做?我尝试了许多想法,例如使用Jsoup:
public static String html2text(String html) {
return Jsoup.parse(html).text();
}
但这似乎还不够,而< td> Location < /td>
列表中的第2个或货币(列表中第4个相同的问题)可能包含多个单词。
答案 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));
}
}