背景:公司需要更新地区表的相关信息,同时因为数据量有些多,所以希望采取爬从技术进行解决。
参考博客:
https://blog.youkuaiyun.com/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_CODE | F_A_CODE | A_NAME_CN |
110118 | 110100 | 密云区 |
110119 | 110100 | 延庆区 |
120116 | 120100 | 滨海新区 |
120117 | 120100 | 宁河区 |
120118 | 120100 | 静海区 |
同时筛选出和老版本中不一致的数据,方便进行修改