你的位置:初春少女 > 快播东京热 > 【DVDPS-903】本場L.A帰りの本物ロリカワレゲエダンサーSAKURA 衝撃のAVデビューで腰ふりまくりの潮吹きまくり!!</a>2007-06-21ディープス&$DEEP’S123分钟 Python办公——自动爬取《国度统计局2023年统计用区画代码》
【DVDPS-903】本場L.A帰りの本物ロリカワレゲエダンサーSAKURA 衝撃のAVデビューで腰ふりまくりの潮吹きまくり!!</a>2007-06-21ディープス&$DEEP’S123分钟 Python办公——自动爬取《国度统计局2023年统计用区画代码》
发布日期:2024-08-24 03:57    点击次数:76

【DVDPS-903】本場L.A帰りの本物ロリカワレゲエダンサーSAKURA 衝撃のAVデビューで腰ふりまくりの潮吹きまくり!!</a>2007-06-21ディープス&$DEEP’S123分钟 Python办公——自动爬取《国度统计局2023年统计用区画代码》

一、需求配景    由于《涉农贷款专项统计轨制》改良实质变动较大,需要凭证《2023年统计用区画代码和城乡分类代码》再行界定农户、农村企业等。    数据着手网址为:国度统计局http://www.stats.gov.cn/sj/tjbz/tjyqhdmhcxhfdm/2023/32.html    手动操作截图如下:

图片【DVDPS-903】本場L.A帰りの本物ロリカワレゲエダンサーSAKURA 衝撃のAVデビューで腰ふりまくりの潮吹きまくり!!2007-06-21ディープス&$DEEP’S123分钟

图片

图片

图片

聚色网    旅途归来为:扬州市→高邮市→三垛镇→辖内村居,赫然通过复制粘贴至Excel表格中是不行行的,Python解决后的恶果为:

图片

    此处爬取了全省21971札纪录,在表格中径直查询也可以,后期再制作成多级联动下拉列表亦然可以的遴荐。二、难点讲明    第一、向下钻取一层,网址的变化规矩如何?    第二、如何快速地得到最末级的村居纪录?    第三、如何同期得到市级/县级/镇级的纪录?    第四、如何拔擢四级行政区画的对应干系?三、代码齐全1 导入第三方库# 数据读写与解决import pandas as pd# 缔造表格姿首from openpyxl import load_workbookfrom openpyxl.styles import Border, Side, Alignmentimport xlwings as xw2 事先界说函数2.1 缔造表格姿首
def formation(path):    # 读取使命簿    wb = load_workbook(path)    for sheet in wb.sheetnames:        # 得到使命表        ws = wb[sheet]        # 缔造单位格的边框、对皆方式        for i in range(ws.max_column):            for j in range(1, ws.max_row+1):                row = ws[chr(ord('A')+i) + str(j)]                row.alignment = Alignment(horizontal='center', vertical='center')                row.border = Border(left=Side(border_style='thin'),                                    right=Side(border_style='thin'),                                    top=Side(border_style='thin'),                                    bottom=Side(border_style='thin'))    # 另存为使命簿    wb.save(path)
2.2 调停行高列宽def adjust(path): # 读取使命簿 wb_ = app.books.open(path) for sheet in wb_.sheet_names: # 得到使命表 ws_ = wb_.sheets[sheet] # 齐全表格行高或列宽自动调停 ws_.autofit() # 保存使命簿 wb_.save(path) # 关闭使命簿 wb_.close()2.3 更新网页地址
def Newaddress(address,add):    # 按“/”分列    ls = address.split('/')    # 最末级的取倒数两个字符    ls[-1] = ls[-1][-2:]    # 将下一级的添加至列表    ls.append(add)    # 再以“/”联结    address = '/'.join(ls)    # 复返网页地址    return address
2.4 批量爬取数据def Getdata(address): # 读取网页数据 df = pd.read_html(f'http://www.stats.gov.cn/sj/tjbz/tjyqhdmhcxhfdm/2023/{address}.html') # 整理网页数据,去重空值及缱绻表头 df = df[0].dropna() new_header = df.iloc[0].tolist() df = df.iloc[1:].reset_index(drop=True) df.columns = new_header # 按照【统计用区画代码】的定名章程,详情网址变化规矩及递归拒绝条目 code = df['统计用区画代码'][0] # 点击参加某个市级 if code[-8:] == '0'*8: count = 4 # 点击参加某个县级 elif code[-6:] == '0'*6: count = 6 # 点击参加某个村级 elif code[-3:] == '0'*3: count = 9 # 已达村级,复返数据框 else: return df # 遍历每个【统计用区画代码】 for code in df['统计用区画代码']: # 将市级、县级、镇级诀别存储起来,应是独一的 ## 筛选适当条目的数据纪录 label = df[df['统计用区画代码']==code].reset_index(drop=True) # 现时为市级界面,将市级存储起来 if count == 4: location['市级'][0].append(label) # 现时为县级界面,将县级存储起来 elif count == 6: location['县级'][0].append(label) # 现时为镇级界面,将镇级存储起来 elif count == 9: location['镇级'][0].append(label) # 得到下一级的关节字 add = code[:count] # 造作捕捉器的作用为:严防【市辖区】溢出 try: # 深度优先搜索的递归念念想,即:将【扬州市-宝应县-鲁垛镇-辖内村】搜索收场后再进行下一轮 # 先预解决网页地址,再调用递归函数 result = Getdata(Newaddress(address,add)) # 若复返值不为空,将村级存储起来 if not (result is None): location['村级'][0].append(result) except: # 【市辖区】惟有县级,东说念主为添加【镇级】与【村级】 location['镇级'][0].append(label) location['村级'][0].append(label)3 自动化主法子3.1 批量得到数据
# 界说运转折start = '32'location = {'市级':[[],4],'县级':[[],6],'镇级':[[],9],'村级':[[],12]}mapping = {'111':'主城区','112':'城乡结合区','121':'镇中心区','122':'镇乡结合区','123':'格外区域','210':'乡中心区','220':'村落'}path = 'C:/ZeroTrain/扬州市统计用区画代码和城乡分类代码.xlsx'# 调用界说函数Getdata(start)
3.2 数据解决保存# 遍历主键【市级、县级、镇级、村级】for hierarchy in location: # 纵向归并纪录 df_temp = pd.concat(location[hierarchy][0]).reset_index(drop=True) # 填充缺失值,【市辖区】【城乡分类代码】 df_temp = df_temp.fillna('111') # 新增群众字段 for name in location: df_temp[f'群众简码_{name}'] = df_temp['统计用区画代码'].str[:location[name][1]] if hierarchy == '村级': df_temp['城乡分类类型'] = df_temp['城乡分类代码'].map(mapping) # 字段再行定名 df_temp.rename(columns={'统计用区画代码':f'统计用区画代码_{hierarchy}','称呼':f'称呼_{hierarchy}'},inplace=True) # 添加至字典中 location[hierarchy].append(df_temp)# 诀别得到【市级、县级、镇级、村级】纪录df_shi = location['市级'][2].drop(columns=['群众简码_县级','群众简码_镇级','群众简码_村级'])df_xian = location['县级'][2].drop(columns=['群众简码_镇级','群众简码_村级'])df_zhen = location['镇级'][2].drop(columns=['群众简码_市级','群众简码_村级'])df_cun = location['村级'][2].drop(columns=['群众简码_市级','群众简码_县级','群众简码_村级'])# 横向归并纪录final = df_shi.merge(df_xian,on='群众简码_市级').merge(df_zhen,on='群众简码_县级').merge(df_cun,on='群众简码_镇级')# 保存数据纪录final[['称呼_市级','称呼_县级','称呼_镇级','称呼_村级','统计用区画代码_村级','城乡分类代码','城乡分类类型']].to_excel(f'{path}',index=False)# 启动Excel法子app = xw.App(visible=False, add_book=False)# 款式化数据纪录formation(path)adjust(path)# 退出Excel法子app.quit()四、末尾归来    第一、向下钻取一层,网址的变化规矩如何?        领先,【市级】对应【统计用区画代码】前4位,【县级】对应【统计用区画代码】前6位,【镇级】对应【统计用区画代码】前9位;其次,每向下钻取一层,表层的网址要缩减为倒数2位,如:【扬州市】为“32/3210.html”,【高邮市】为“32/10/321084.html”,【三垛镇】为“32/10/84/321084108.html”;    第二、如何快速地得到最末级的村居纪录?        想要访佛相通解决的技能用递归会很便捷,在本例中使用的递归是“深度优先搜索”,又称“回溯法”,其特征是一直向下搜索,无法链接时复返。举例,扬州市→高邮市→三垛镇→辖内村居,进行逐层点击与走访;

图片

    第三、如何同期得到市级/县级/镇级的纪录?    接管了字典的方式,反用了另一种规矩,【市级】的【统计用区画代码】后8位均为0,【县级】的【统计用区画代码】后6位均为0,【镇级】的【统计用区画代码】后3位均为0。当界面纪录兴奋相应条目时,筛选纪录后径直以数据框的体式存储至列表中,便于Pandas操作;    第四、如何拔擢四级行政区画的对应干系?    在进行归并前,可以作念一下痴呆的校验,【市级】、某市下【县级】数据框的长度应该与网页上展示的一致;【镇级】和【村级】数据框的长度应该相称,要珍重在【县级】切换时【村级】纪录会增多空值的情形,应赐与判断剔除。    通过朝上一级的【群众简码】来手脚横向联结的群众字段,从而构建雄伟的多维数据集。淌若想要归并的代码简陋,则尽量保证群众字段的独一性,不然必须诀别指明傍边的联结字段。五、多学小数 本站仅提供存储做事,悉数实质均由用户发布,如发现存害或侵权实质,请点击举报。

相关资讯