多渠道实现获取国家行政区数据:爬虫、调用API、私有化部署
背景
现实情况,在信息系统开发、电子商务平台、app等等相关软件开发,都会设计到行政区数据联动,但是如何获取最新、准确的数据呢? 在这里给各位推荐三种获取方式
一、Python国家行政区数据爬取示例【源码可运行】
这里里给初学者、有需要的人提供一个数据抓取的脚本,有效、可运行,将抓取的数据写入到本地csv文件中 不废话,上代码:
- 注意:改代码可以抓取:省、市、区、乡镇街道、村社区 五级完整行政区,由于村社区数量比较大,抓取方法调用被注释了,有需要的可以取消注释
from bs4 import BeautifulSoup
import csv
import re
import requests
class XingZhengQu(object):
def __init__(self):
self.session = requests
self.initCsvWriter()
def initCsvWriter(self):
self.csvFile = open('xingzhengqu.csv', 'w')
self.csvWriter = csv.writer(self.csvFile)
self.csvWriter.writerow(['行政代码','名称','层级','类型'])
def csvWriteRow(self,row):
self.csvWriter.writerow(row)
# 省
def getProvice(self):
url='http://www.stats.gov.cn/sj/tjbz/tjyqhdmhcxhfdm/2022/index.html'
resp = self.session.get(url)
resp.encoding='utf-8'
soup = BeautifulSoup(resp.text, 'lxml')
a = soup.select('table.provincetable > tr.provincetr > td >a')
for item in a:
proviceUrl = item.get('href')
pid = re.findall("([0-9]+)\.html",proviceUrl)
print('--',pid,proviceUrl)
code = pid[0].ljust(12,'0')
print('{}-{}-{}'.format(code,item.get_text(),1))
row =[code,item.get_text(),1,'']
self.csvWriteRow(row)
cityUrl = '{}/{}'.format(url.rsplit('/',1)[0],proviceUrl)
self.getCity(cityUrl)
# 市
def getCity(self,url):
print('getCity',url)
resp = self.session.get(url)
resp.encoding='utf-8'
soup = BeautifulSoup(resp.text, 'lxml')
trs = soup.select('table.citytable > tr.citytr')
for tr in trs: