1.安装python(自行百度)

2.安装依赖

3.创建文件复制以下内容

备注: if province_name==r'甘肃省' :   根据需要判断是否需要读取单独省份数据。

# This is a sample Python script.
 
# Press ⌃R to execute it or replace it with your code.
# Press Double ⇧ to search everywhere for classes, files, tool windows, actions, and settings.
 
 
import requests
from bs4 import BeautifulSoup
import pymysql
import time
 
 
class Administrative(object):
    def __init__(self):
        self.db = pymysql.connect(host="127.0.0.1", port=3306,
                              database="ceshi",
                              charset="utf8mb4", user="root",
                              password="root")
        self.main()
        self.db.close()
 
    def main(self):
        base_url = 'http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2021/'
        sql = "insert into area_2021 (area_code,area_name,parent_code,level) values (%s,%s,%s,%s)"
        trs = self.get_response(base_url, 'provincetr')
        for tr in trs:  # 循环每一行
 
            for td in tr:  # 循环每个省
 
                province_code = td.a.get('href').replace('.html','')
                province_name = td.a.get_text()
                if province_name==r'甘肃省' :
                    pass
                else:
                    continue
                province_url = base_url + td.a.get('href')
                # print(province_name)
                # time.sleep(1)
                data = [province_code,province_name,'0',1]
                print(data)
                datas = []
                datas.append(data)
                self.connect_mysql(sql, datas)
                trs = self.get_response(province_url, None)
                for tr in trs[1:]:  # 循环每个市
                    city_code = tr.find_all('td')[0].string
                    city_name = tr.find_all('td')[1].string
                    city_url = base_url + tr.find_all('td')[1].a.get('href')
                    #print(city_name)
                    data = [city_code, city_name, province_code, 2]
                    print(data)
                    datas = []
                    datas.append(data)
                    self.connect_mysql(sql, datas)
                    trs = self.get_response(city_url, None)
                    for tr in trs[1:]:  # 循环每个区
                        county_code = tr.find_all('td')[0].string
                        county_name = tr.find_all('td')[1].string
                        #print(county_name)
                        if tr.find_all('td')[1].a:
                            county_url = base_url +province_code+'/'+ tr.find_all('td')[1].a.get('href')
                            county_baseurl = county_url[:county_url.rfind('/')+1]
 
                            data = [county_code, county_name, city_code, 3]
                            print(data)
                            datas = []
                            datas.append(data)
                            self.connect_mysql(sql, datas)
                            # time.sleep(1)
                            trs = self.get_response(county_url, None)
                            if trs is None:
                                print(county_url)
                            else:
                                for tr in trs[1:]:  # 循环每个乡
                                    town_code = tr.find_all('td')[0].string
                                    town_name = tr.find_all('td')[1].string
                                    town_url = county_baseurl + tr.find_all('td')[1].a.get('href')
                                    #print(town_name)
                                    data = [town_code, town_name, county_code, 4]
                                    print(data)
                                    datas = []
                                    datas.append(data)
                                    self.connect_mysql(sql, datas)
                                    # time.sleep(1)
                                    trs = self.get_response(town_url, None)
                                    if trs is None:
                                        print(town_url)
                                    else:
                                        for tr in trs[1:]:  # 循环每个村
                                            village_code = tr.find_all('td')[0].string
                                            village_name = tr.find_all('td')[2].string
                                            # print(village_name)
                                            data = [village_code, village_name, town_code, 5]
                                            print(data)
                                            datas = []
                                            datas.append(data)
                                            self.connect_mysql(sql, datas)
                                    # data = [province_name, city_code, city_name, county_code, county_name]
                                    # print(data)
                                    # datas.append(data)
                        else:
                            continue
 
 
 
    def get_response(self, url, attr):
        i = 0
        while i < 3:
            try:
                response = requests.get(url, timeout=5)
                response.encoding = 'utf-8'  # 编码转换
                soup = BeautifulSoup(response.text, 'html.parser')
                table = soup.find_all('tbody')[1].tbody.tbody.table
                if attr:
                    trs = table.find_all('tr', attrs={'class': attr})
                else:
                    trs = table.find_all('tr')
 
                return trs
            except requests.exceptions.RequestException:
                i += 1
                print("请求超时")
 
 
    def connect_mysql(self, sql, data):
        cursor = self.db.cursor()
        try:
            result = None
            if data:
                if isinstance(data[0], list):
                    cursor.executemany(sql, data)
                else:
                    cursor.execute(sql, data)
            else:
                cursor.execute(sql)
                result = cursor.fetchall()
        except Exception as e:
            print(e)
            self.db.rollback();
        finally:
            cursor.close()
            self.db.commit();  # 提交操作
            return result
 
 
if __name__ == '__main__':
    Administrative()

获取国家统计局行政区划数据(复制粘贴)相关推荐

  1. C#实现excle数据复制粘贴到DataGrideView表格中

    C#实现excle数据复制粘贴到DataGrideView表格中 //重写系统控件的检测系统快捷按键命令,只要放在展示dgv表格的窗体中就行 using System; using System.Co ...

  2. excel表格如何转换成word表格_将excel/word数据复制粘贴到word表格的几种方式

    将excel/word数据复制粘贴到word表格的几种方式 有时候我们需要把excel中的数据粘贴到word中的一个表格中,或者在word中一个表格的内容粘贴到另一个表格中.这两种情况,都遵循同样的操 ...

  3. Excel 2010 如何将筛选后的数据复制粘贴到另一个工作表筛选后的表格里

    如果你是指自动筛选后,把筛选数据复制/粘贴到另外一个工作表中,不妨试试试 第一步选中筛选后的数据区域:第二步执行菜单命令"编辑/定位/定位条件/可见单元格",确定:第三步单击复制按 ...

  4. matlab复制txt里的一列,将txt格式里的两列数据复制粘贴导入excel 后全都在同一列里,怎样让它们分成两列?...

    将txt格式里的两列数据复制粘贴导入excel 后全都在同一列里,怎样让它们分成两列?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起 ...

  5. 获取国家统计局行政区划表

    一.国家统计局网站有最新最全的全国行政区划表,从网页源代码看来,靠,我都怀疑是不是用电子表格或是文字处理软件做的,还"国家"统计局呢. http://www.stats.gov.c ...

  6. html数据复制粘贴,如何复制和粘贴 HTML (HTML)

    如何复制和粘贴 HTML (HTML) 12/11/2015 本文内容 [ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员.如果 ...

  7. python爬虫获取国家统计局乡镇数据

    import requests from bs4 import BeautifulSoup #解析网页 import lxmlurl="http://www.stats.gov.cn/sj/ ...

  8. excel数据复制粘贴入PL/SQL Developer的方法

    如需转载,请注明来源,谢谢合作. 若本文对您有一点点的帮助,欢迎点赞.评论和关注.您的鼓励和支持是我继续学习和分享的动力. 推荐免费.高效.入门级的SQL教程http://www.w3school.c ...

  9. 制作一套适用于Oracle数据库的县及县以上行政区划数据

    2019独角兽企业重金招聘Python工程师标准>>> 因为项目中要用到最新版的中国行政区划数据,我总结了如下方法归集数据,仅供参考. 之前已经写过一篇博客<总结几个有关国家行 ...

最新文章

  1. AIX下镜像制作与取消,更换硬盘
  2. 阿里为啥放弃Oracle、Hadoop,选择全面拥抱它!网友:断臂求生?
  3. Scala学习第五天数组
  4. 获取GridView中RowCommand的当前选中行的索引或主键Id
  5. C++ STL deque创建
  6. 【报告分享】抖音蓝V账号定位及外化罗盘.pdf(附下载链接)
  7. POJ 1321-棋盘问题-简单搜索DFS
  8. 【HDOJ6957】Maximal submatrix(单调栈,最大子矩阵面积)
  9. 从远程服务器中下载文件到本地
  10. (转载)Jvm工作原理学习笔记
  11. AN515-43 COMPAL LA-H901P笔记本主板+小板点位图
  12. 会员积分系统运营的五个操作步骤
  13. 如何使用计算机文件共享,两台电脑如何共享文件?【步骤图解】
  14. IOS13以上抓https包,基于win7+Fiddler,操作记录
  15. android波纹动画,Android实现水波纹效果
  16. 企业微信自建应用调试方法以及小坑
  17. xavier / acts-as-tree-with-dotted-ids
  18. 【MySQL】分组查询
  19. Python re.compile以及group分组
  20. 惠普笔记本恢复出厂系统

热门文章

  1. burpsuite靶场系列之客户端漏洞篇 - 跨站脚本(XSS)专题
  2. 使用远程桌面Remote desktop访问Azure虚拟机
  3. ffmpeg将rgba数据转成png图片
  4. Android官方文档—User Interface(概述)
  5. Java中的互斥锁介绍
  6. 存储过程语法(MySQL)
  7. 关于项目报告的写法问题
  8. 一些opencv小工程(蓝白转换,进度条亮度对比度,鼠标位置读取rgb)
  9. 一个企业固定资产折旧案例
  10. C语言绘图示例-分色调图20例