公司有个项目需要五级行政区划,没有现成的数据,写了一段代码,从gj统计j获取的数据。记录一下。
1.引入maven解析html
<!-- jsoup --> <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.11.3</version> </dependency>
2.Java代码实现
@GetMapping("/hh")
public void hh(){
Division d=new Division();
final String url = "https://www.stats.gov.cn/sj/tjbz/tjyqhdmhcxhfdm/2023/";
String provinceurl = "https://www.stats.gov.cn/sj/tjbz/tjyqhdmhcxhfdm/2023/index.html"; // 需要爬取的目标网站地址
try {
Document document = Jsoup.connect(provinceurl).get(); // 获取该网页的文档对象
String title = document.title(); // 获取页面标题
//省
Elements provincetable=document.body().select("tr.provincetr").select("a[href]");
for (Element province : provincetable) {
String provinceHref = province.attr("href"); // 获取链接地址
String provinceText = province.text(); // 获取链接文字
d.setProvincialCode(provinceHref.replace(".html",""));
d.setProvincialName(provinceText);
String cityurl=url+provinceHref;
//System.out.println("cityurl = " + cityurl);
Document citytabledocument = Jsoup.connect(cityurl).get();
//市
Elements citytable=citytabledocument.body().select("table.citytable").select("a[href]");
//System.out.println("citytable = " + citytable);
for(int i=0;i<citytable.size()/2;i++){
d.setMunicipalCode(citytable.get(i).text());
i=i+1;
d.setMunicipalName(citytable.get(i).text());
String cityHref = citytable.get(i).attr("href"); // 获取链接地址
String countyurl=url+cityHref;
System.out.println("countyurl = " + countyurl);
Document countytableocument = Jsoup.connect(countyurl).get();
//区
Elements countytable