想找一份最新的省市区三级联动的数据,网上的怕不够新,不够准确
正好用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 main import ( "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
太大无法显示
想直接下载sql文件的,点击这里到csdn下载吧