1.行政区划api
https://quhua.ipchaxun.com/api/areas/data?code=350200&children=1
2.表结构
CREATE TABLE "XZQHDM" (
"CODE" VARCHAR(16 char) NOT NULL,
"PARENTCODE" VARCHAR(16 char) NULL,
"XZQHDJ" VARCHAR(16 char) NULL,
"NAME" VARCHAR(64 char) NULL,
"PARENTCODES" VARCHAR(255 char) NULL,
"PROVINCE" VARCHAR(64 char) NULL,
"CITY" VARCHAR(64 char) NULL,
"DISTRICT" VARCHAR(64 char) NULL,
"TOWN" VARCHAR(64 char) NULL,
"PINYIN" VARCHAR(255 char) NULL,
"JIANPIN" VARCHAR(32 char) NULL,
"FIRSTCHAR" VARCHAR(16 char) NULL,
"TEL" VARCHAR(32 char) NULL,
"ZIP" VARCHAR(32 char) NULL,
"LNG" VARCHAR(64 char) NULL,
"LAT" VARCHAR(64 char) NULL,
CONSTRAINT "XZQHDM_CONSTRAINT_1" PRIMARY KEY ("CODE")
);
3.实体类
package com.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
@TableName("XZQHDM")
public class XzqhVO implements Serializable {
private static final long serialVersionUID = 1L;
@TableId
private String code;
private String parentcode;
private String xzqhdj;
private String name;
private String parentcodes;
private String province;
private String city;
private String district;
private String town;
private String pinyin;
private String jianpin;
private String firstchar;
private String tel;
private String zip;
private String lng;
private String lat;
@TableField(exist = false)
private List<XzqhVO> childrens;
@TableField(exist = false)
private String level;
}
4.数据抽取程序
@Log4j2
@RunWith(SpringRunner.class)
@SpringBootTest
public class XzqhTest {
@Autowired
private XzqhMapper xzqhMapper;
/**
* 获取行政区划信息
*/
@Test
public void getXzqh() {
String allXzqh = "110000,120000,130000,140000,150000,210000,220000,230000,310000,320000,330000,340000,350000,360000,370000," +
"410000,420000,430000,440000,450000,460000,500000,510000,520000,530000,540000,610000,620000,630000,640000,650000," +
"810000,820000,710000";
String[] split = allXzqh.split(",");
for (String xzqhdm : split) {
String url = "https://quhua.ipchaxun.com/api/areas/data?code={}&children={}";
// 省级:1,市级:2,县区:3,镇、街道:4
String level = "4";
url = StrUtil.format(url, xzqhdm, level);
String s = HttpUtil.get(url);
if (StrUtil.isNotEmpty(s) && JSONUtil.isJson(s)) {
JSONObject jsonObject = JSONUtil.parseObj(s);
if (jsonObject.get("data") != null) {
JSONObject data = (JSONObject) jsonObject.get("data");
if (data.get("results") != null) {
JSONArray results = (JSONArray) data.get("results");
List<XzqhVO> list = JSONUtil.toList(results, XzqhVO.class);
if (list != null && list.size() > 0) {
XzqhVO vo = list.get(0);
// 一级
vo.setXzqhdj(vo.getLevel());
XzqhVO xzqhVO1 = xzqhMapper.selectById(vo.getCode());
if (xzqhVO1 != null && StrUtil.isNotEmpty(xzqhVO1.getCode())) {
xzqhMapper.updateById(vo);
} else {
xzqhMapper.insert(vo);
}
if (CollUtil.isNotEmpty(vo.getChildrens())) {
List<XzqhVO> childrens = vo.getChildrens();
for (XzqhVO vo2 : childrens) {
// 二级
vo2.setXzqhdj(vo2.getLevel());
XzqhVO xzqhVO2 = xzqhMapper.selectById(vo2.getCode());
if (xzqhVO2 != null && StrUtil.isNotEmpty(xzqhVO2.getCode())) {
xzqhMapper.updateById(vo2);
} else {
xzqhMapper.insert(vo2);
}
if (CollUtil.isNotEmpty(vo2.getChildrens())) {
List<XzqhVO> childrens2 = vo2.getChildrens();
for (XzqhVO vo3 : childrens2) {
// 三级
vo3.setXzqhdj(vo3.getLevel());
XzqhVO xzqhVO3 = xzqhMapper.selectById(vo3.getCode());
if (xzqhVO3 != null && StrUtil.isNotEmpty(xzqhVO3.getCode())) {
xzqhMapper.updateById(vo3);
} else {
xzqhMapper.insert(vo3);
}
if (CollUtil.isNotEmpty(vo3.getChildrens())) {
List<XzqhVO> childrens3 = vo3.getChildrens();
for (XzqhVO vo4 : childrens3) {
// 四级
vo4.setXzqhdj(vo4.getLevel());
XzqhVO xzqhVO4 = xzqhMapper.selectById(vo4.getCode());
if (xzqhVO4 != null && StrUtil.isNotEmpty(xzqhVO4.getCode())) {
xzqhMapper.updateById(vo4);
} else {
xzqhMapper.insert(vo4);
}
}
}
}
}
}
}
}
}
}
}
}
}
}