爬虫爬取统计局地区信息的相关总结

背景:公司需要更新地区表的相关信息,同时因为数据量有些多,所以希望采取爬从技术进行解决。

参考博客:

https://blog.csdn.net/Levy_96/article/details/72771638?spm=1001.2014.3001.5501

基本操作就是参考上面博客获得。

当时我的电脑mysql出现问题,所以不能将文件保存在数据库中,因此,在spider_main.py文件中将获得的数据保存为.npy格式。

print("开始保存")
np.save('province_url_list.npy', province_url_list)
np.save('city_url_list.npy', city_url_list)
np.save('county_url_list.npy', county_url_list)
# np.save('town_url_list.npy', town_url_list)
print("保存完成")

之后再读取.npy文件,将内容转换为.csv文件。

import numpy as np
import pandas as pd

def output(data):
    data = pd.DataFrame(data)
    data.to_csv(str(data)+'.csv')



data1 = np.load('province_url_list1.npy', allow_pickle=True)
data2 = np.load('city_url_list1.npy', allow_pickle=True)
data3 = np.load('county_url_list1.npy', allow_pickle=True)
#print(data1)
print(type(data1))
print(type(data2))
print(type(data3))
#print(data2)
#print(data3)
print(data1.shape)
#print(data2.shape)
print(data3.shape)

data11=np.reshape(data1,(-1,3))
#data22=np.reshape(data2,(-1,3))
print(data11.shape)
#print(data22.shape)
data11 = pd.DataFrame(data11)
#np.savetxt('1.csv',data11,delimiter=',')
data11.to_csv('data1.csv')
#data2.to_csv('data2.csv')
#print(type(data11))
print(data2)
print()
print()
data22 = []
for data0 in data2:
    for data in data0:
        #print(type(data))
        data22.append(data)
    #break
data22 = np.array(data22)
#print(np.array(data2))
print(np.array(data22))
print(data22.shape)
data22 = pd.DataFrame(data22)
data22.to_csv('data2.csv')
print(type(data22))
print(data3)
data33 = []
for data0 in data3:
    for data in data0:
        #print(type(data))
        data33.append(data)
    #break
data33 = np.array(data33)
data33 = pd.DataFrame(data33)
data33.to_csv('data3.csv')
print(data33.shape)
#output(data33)

现在拥有一些csv文件,等处理好mysql问题后,将数据导入数据库,用sql语句进行相应操作。

目前拥有的数据格式示例:

,0,1,2
0,北京市,http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/11.html,11
1,天津市,http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/12.html,12
0,市辖区,http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/11/1101.html,110100000000
1,市辖区,http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/12/1201.html,120100000000
0,东城区,http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/11/01/110101.html,110101000000
1,西城区,http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/11/01/110102.html,110102000000

公司需要将其处理为

A_CODE,F_A_CODE,A_NAME_CN的格式

从编码可以找到对应规则,所以其实使用sql很方便进行处理。

将编码采用left(A_CODE,4)进行处理,就可以设置出对应的F_A_CODE。

目前保存为这样的格式:

A_CODEF_A_CODEA_NAME_CN
110118110100密云区
110119110100延庆区
120116120100滨海新区
120117120100宁河区
120118120100静海区

同时筛选出和老版本中不一致的数据,方便进行修改

从国家统计局抓取的地图省市区划代码和城划分代码(最新2020/06/03),共596071条数据。来源于国家统计局http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2019/。 数据结构: CREATE TABLE `area` ( `areaid` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `area_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, `fatherid` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, `area_type` int(255) DEFAULT NULL COMMENT '区域代码:\r\n100 :城镇,110:城区,111 :主城区,112 :城乡结合区,120 :镇区,121 :镇中心区,122:镇乡结合区,123:特殊区域200 :乡村,210:乡中心区,220:村庄\r\n\r\n', `is_delete` int(255) DEFAULT '0', PRIMARY KEY (`areaid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 部分数据: INSERT INTO `area` VALUES ('110000000000','北京市',NULL,NULL,0); INSERT INTO `area` VALUES ('110100000000','市辖区','110000000000',NULL,0); INSERT INTO `area` VALUES ('110101000000','东城区','110100000000',NULL,0); INSERT INTO `area` VALUES ('110101001000','东华门街道','110101000000',NULL,0); INSERT INTO `area` VALUES ('110101001001','多福巷社区居委会','110101001000',111,0); INSERT INTO `area` VALUES ('110101001002','银闸社区居委会','110101001000',111,0); INSERT INTO `area` VALUES ('110101001005','东厂社区居委会','110101001000',111,0); INSERT INTO `area` VALUES ('110101001006','智德社区居委会','110101001000',111,0); INSERT INTO `area` VALUES ('110101001007','南池子社区居委会','110101001000',111,0); INSERT INTO `area` VALUES ('110101001008','黄图岗社区居委会','110101001000',111,0); INSERT INTO `area` VALUES ('110101001009','灯市口社区居委会','110101001000',111,0); INSERT INTO `area` VALUES ('110101001010','正义路社区居委会','110101001000',111,0); INSERT INTO `area` VALUES ('110101001011','甘雨社区居委会','110101001000',111,0); INSERT INTO `area` VALUES ('110101001013','台基厂社区居委会','110101001000',111,0); INSERT INTO `area` VALUES ('110101001014','韶九社区居委会','110101001000',111,0); INSERT INTO `area` VALUES ('110101001015','王府井社区居委会','110101001000',111,0); INSERT INTO `area` VALUES ('110101002000','景山街道','110101000000',NULL,0); INSERT INTO `area` VALUES ('110101002001','隆福寺社区居委会','110101002000',111,0); INSERT INTO `area` VALUES ('110101002002','吉祥社区居
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值