将乡镇街道数据写入到sql,方便导入数据库表;
package com.mock.common;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import cn.hutool.core.io.FileUtil;
import com.mock.entity.AreaEntity;
public class AreaSqlUtils {
public static String TJSJ_URL = "http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2021";
public static void main(String[] args) {
getProvince();
}
private static void getProvince() {
Document doc;
try {
doc = Jsoup.connect(TJSJ_URL).get();
Elements links = doc.select("tr.provincetr").select("a");
AreaEntity param = null;
for (Element e : links) {
param = new AreaEntity();
String href = e.attr("href");
String[] arr = href.split("\\.");
String code = arr[0];
if (arr[0].length() < 6) {
for (int i = 0; i < 6 - arr[0].length(); i++) {
code += "0";
}
}
param.setCode(code);
param.setName(e.text());
String absHref = e.attr("abs:href");
System.out.println(absHref);
getCity(absHref, param);
try {
Thread.sleep(1000);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
private static void getCity(String url, AreaEntity param) {
Document doc;
try {
doc = Jsoup.connect(url).get();
Elements links = doc.select("tr.citytr");
AreaEntity city;
for (Element e : links) {
city = new AreaEntity();
Elements alist = e.select("a");
Element codeE = alist.get(0);
Element codeN = alist.get(1);
String name = codeN.text();
String code = codeE.text();
if ("市辖区".equals(name)) {
name = param.getName();
}
city.setCode(code);
city.setName(name);
String absHref = codeE.attr("abs:href");
getArea(absHref, param, city);
}
} catch (IOException e) {
e.printStackTrace();
}
}
/** * 获取区县地址 * @param url * @param param */
private static void getArea(String url,AreaEntity province, AreaEntity city) {
Document doc;
try {
doc = Jsoup.connect(url).get(); // Jsoup.connect(url).get();
Elements links = doc.select("tr.countytr");
AreaEntity area;
for (Element e : links) {
area = new AreaEntity();
Elements alist = e.select("a");
if (alist.size() > 0) {
Element codeE = alist.get(0);
String code = codeE.text();
area.setCode(code);
Element codeN = alist.get(1);
String name = codeN.text();
area.setName(name);
String absHref = codeE.attr("abs:href");
getTown(absHref, province, city, area);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
//乡镇
private static void getTown(String url, AreaEntity province, AreaEntity city, AreaEntity area) {
List<String> list = new ArrayList<String>();
Document doc;
try {
doc = Jsoup.connect(url).get();
Elements links = doc.select("tr.towntr");
AreaEntity town;
for (Element e : links) {
town = new AreaEntity();
Elements alist = e.select("a");
if (alist.size() > 0) {
Element codeE = alist.get(0);
String code = codeE.text();
town.setCode(code);
Element codeN = alist.get(1);
String name = codeN.text();
town.setName(name);
String line = "INSERT INTO tbl_area(code, province, city, area, town) VALUES('" + code +"', '"+ province.getName()+"', '" + city.getName()
+ "', '" + area.getName() + "', '"+name + "');";
list.add(line);
}
}
FileUtil.appendUtf8Lines(list, "F:\\test.sql");
} catch (IOException e) {
e.printStackTrace();
}
}
}