数据来源:民政部网站
工作时遇到需要查询最新的行政区划代码的需求,需要查询各行政区划的面积,从民政部网站找到了这些数据,为了方便查询,我将检索结果网页保存到本地后用java的JSOUP解析网页并将数据入库。
筛选后有效数据大致如下如下图:
附上html解析代码,后续网页如果有变动可以重新解析。
package com.example.demotyyrockermq.service;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class AreaTask {
public static void main(String[] args) throws IOException {
File file = new File("C:\\Users\\admin\\Desktop\\XX\\高级查询.html");
Document document = Jsoup.parse(file);
Elements info_table = document.getElementsByClass("info_table");
StringBuilder sb = new StringBuilder();
for (Element element : info_table) {
Elements tbodys = element.getElementsByTag("tbody");
for (Element tbody:tbodys) {
Integer i =0;
Elements trs = tbody.getElementsByTag("tr");
for (Element tr:trs) {
i++;
if(i==1){
continue;
}
if(i==2){
Elements th = tr.getElementsByTag("th");
Integer k = 0;
for (Element thElement : th) {
k ++;
sb.append(thElement.html());
if(k<th.size()){
sb.append(",");
}
}
sb.append("\r\n");
}
Elements td = tr.getElementsByTag("td");
Integer k = 0;
for(int j=0;j<td.size();j++){
k ++;
if(j==0||j==1||j==2){
String a = td.get(j).getElementsByTag("a").html();
sb.append(a);
}else{
String html = td.get(j).html();
sb.append(html);
}
if(k<td.size()){
sb.append(",");
}
}
sb.append("\r\n");
}
}
break;
}
String str=sb.toString();
FileWriter writer;
try {
writer = new FileWriter("C:\\Users\\admin\\Desktop\\XX\\行政区划.txt");
writer.write("");//清空原文件内容
writer.write(str);
writer.flush();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
入库后的数据也上传一份,有需要的可以自取。