用goquery从国家统计局拉取最新省市区3级行政区划代码,生成SQL文件导入数据库

用goquery从国家统计局拉取最新省市区3级行政区划代码,生成SQL文件导入数据库,第1张

概述想找一份最新的省市区三级联动的数据,网上的怕不够新,不够准确 正好用go从国家统计局官方网站爬一份,生成sql文件,然后导入数据库 最新省市区3级行政区划代码的地址在 http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201703/t20170310_1471429.html 数据库表结构 DROP TABLE IF EXISTS `3goals_area`;CR

想找一份最新的省市区三级联动的数据,网上的怕不够新,不够准确
正好用go从国家统计局官方网站爬一份,生成sql文件,然后导入数据库

最新省市区3级行政区划代码的地址在
http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201703/t20170310_1471429.html

数据库表结构

DROP table IF EXISTS `3goals_area`;CREATE table `3goals_area` (  `ID` int(10) NOT NulL auto_INCREMENT,`name` varchar(100) NOT NulL COMMENT '名称',`code` int(10) unsigned NOT NulL COMMENT '区域代码',`level` int(1) unsigned NOT NulL DEFAulT '0' COMMENT '层级1省2市3县区',`parent` int(10) unsigned NOT NulL DEFAulT '0' COMMENT '父code',PRIMARY KEY (`ID`)) ENGINE=InnoDB auto_INCREMENT=1625 DEFAulT CHARSET=utf8mb4 COMMENT='省市区县';

代码:spIDer.go

package mainimport (    "log"    "github.com/PuerkitoBio/goquery"    "os"    "io"    "strings")func Getsql(){    //地址    var url string    url = "http://www.stats.gov.cn/tJsj/tjbz/xzqhdm/201703/t20170310_1471429.HTML"    doc,err := goquery.Newdocument(url)    if err != nil{      log.Fatal(err)    }    //打开area.sql文件,准备写入SQL语句    var f *os.file    f,_ = os.Create("area.sql")    //按顺序读取,设置当前的省code,市code,用于sql中的parent字段    var NowProvince string = "0"    var NowCity string = "0"    //取到所有数据,循环,判断是省、市还是区县,做不同处理,生成SQL语句    doc.Find(".Msonormal").Each(func(i int,s *goquery.Selection) {        //根据页面特点,有加粗<b>标签的是省级数据        if(s.Find("b").Text() != "") {            NowProvince = strings.Trimspace(s.Find("span").First().Text())            var name string = strings.Trimspace(s.Find("span").Last().Text())            var code string = strings.Trimspace(s.Find("span").First().Text())            io.WriteString(f,"INSERT INTO 3goals_area(`name`,`code`,`level`,`parent`) values('" + name + "','" + code + "',1,0);\r\n")        } else {            //根据页面特点,第一个<span>标签内容是一个空格的是市级数据            if(s.Find("span").First().Text() == " ") {                NowCity = strings.Trimspace(s.Find("span").Eq(1).Text())                var name string = strings.Trimspace(s.Find("span").Last().Text())                var code string = strings.Trimspace(s.Find("span").Eq(1).Text())                io.WriteString(f,2," + NowProvince + ");\r\n")            }            //根据页面特点,第一个<span>标签内容是两个空格的是区县级数据            if(s.Find("span").First().Text() == "  ") {                var name string = strings.Trimspace(s.Find("span").Last().Text())                var code string = strings.Trimspace(s.Find("span").Eq(1).Text())                io.WriteString(f,3," + NowCity + ");\r\n")            }        }    })}func main(){    Getsql()}

安装好go环境,在spIDer.go文件当前目录下,运行

go run spIDer.go

可以看到在当前目录下,生成了area.sql文件

不想跑脚本的,可以直接拿去导入,sql内容如下:

太大无法显示

想直接下载sql文件的,点击这里到csdn下载吧

总结

以上是内存溢出为你收集整理的用goquery从国家统计局拉取最新省市区3级行政区划代码,生成SQL文件导入数据库全部内容,希望文章能够帮你解决用goquery从国家统计局拉取最新省市区3级行政区划代码,生成SQL文件导入数据库所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/1274153.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存