Go   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了用goquery从国家统计局拉取最新省市区3级行政区划代码,生成SQL文件导入数据库大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

想找一份最新的省市区三级联动的数据,网上的怕不够新,不够准确
正好用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 '名称',@R_395_6450@ 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) {
        //根据@L_618_21@特点,有加粗<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`,@R_395_6450@,`level`,`parent`) values('" + name + "','" + code + "',1,0);\r\n")

        } else {
            //根据@L_618_21@特点,第一个<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")

            }

            //根据@L_618_21@特点,第一个<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文件导入数据库所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。