Python实战:获取身份证前6位归属地

在如今的社会,身份证已经成为了我们日常生活中不可或缺的一部分。它不仅是我们的身份证明,还包含了我们的个人信息,例如出生日期、性别等。而身份证号码的前六位,即行政区划代码,代表了持有人的户籍所在地区。你知道吗,通过 Python 编程,我们可以方便地获取身份证号码前六位的归属地信息。在这篇文章中,我们将一起探讨如何利用 Python 来实现这一功能。

一、找来源

浏览器搜索“在线身份证校验工具”,随便进入一个在线校验网站,本文以https://uutool.cn/id-card/这个网站为例。

Python实战:获取身份证前6位归属地_第1张图片

网页显示“本工具数据均在本地浏览器处理,不会上传到网络服务器中,请放心使用!”

说明网页前端存在一个编码表,那我们只需要找到这个编码表就可以了。

Python实战:获取身份证前6位归属地_第2张图片

打开开发者工具,刷新页面,找到 idCardData.json 这个请求,在 Response 内可以看到返回的就是身份证前 6 位对应的归属地编码。

Python实战:获取身份证前6位归属地_第3张图片

在 Headers 内找到请求 url 是https://cdn.uukit.com/data/idCardData.json

Python实战:获取身份证前6位归属地_第4张图片

二、分析步骤

接下来就可以编写 python 代码,步骤比较简单:发起请求—>获取到 json 数据—>解析 json 数据—>保存数据。

三、代码编写

1、使用csv库实现

使用 csv 库实现,代码如下:

import requests
import csv

url = "https://cdn.uukit.com/data/idCardData.json"
data = requests.get(url).json()

# 创建一个 CSV 文件
with open('身份证归属地查询表.csv', 'w', newline='', encoding='utf-8') as csvfile:
    # 初始化 CSV 写入器
    csv_writer = csv.writer(csvfile)

    # 写入 CSV 文件的表头
    csv_writer.writerow(['编码', '省级行政区', '地级行政区', '县级行政区', '备注'])

    # 遍历 JSON 数据
    for key, value in data.items():
        # 将 JSON 数据写入 CSV 文件
        csv_writer.writerow([key, value['p'], value['a'], value['d'], value['i']])

print("JSON 数据已保存到 身份证归属地查询表.csv 文件中")

执行程序后,在文件夹内可以看到刚才生成的 csv 文件。打开文件,可以看到共有 3829 条归属地编码信息,包含 6 位编码对应的省级、地级、县级行政区。

Python实战:获取身份证前6位归属地_第5张图片

2、使用pandas库实现

使用 pandas 库实现,代码如下:

import requests
import pandas as pd

content_list = []
url = "https://cdn.uukit.com/data/idCardData.json"
data = requests.get(url).json()

# 遍历 JSON 数据
for key, value in data.items():
    content_list.append(
        {'编码': key, '省级行政区': value['p'], '地级行政区': value['a'], '县级行政区': value['d'], '备注': value['i']})

content = pd.DataFrame(content_list)
content.to_csv("身份证归属地查询表2.csv", mode='a', encoding='utf-8', index=False)
print("保存成功")

3、保存到数据库

import requests
import pandas as pd
import sqlite3

content_list = []
url = "https://cdn.uukit.com/data/idCardData.json"
data = requests.get(url).json()

# 遍历 JSON 数据
for key, value in data.items():
    content_list.append(
        {'编码': key, '省级行政区': value['p'], '地级行政区': value['a'], '县级行政区': value['d'], '备注': value['i']})

content = pd.DataFrame(content_list)

# 创建一个SQLite数据库连接
conn = sqlite3.connect('id-card.db')

# 将DataFrame写入SQLite数据库
content.to_sql('id-card_table', conn, if_exists='replace', index=False)

# 提交更改并关闭连接
conn.commit()
conn.close()

使用 SQLiteStudio 图形化工具,连接刚才生成的id-card.db数据库文件,打开id-card_table表,就可以直观的看到刚才写入到数据库中的数据,3829 条归属地数据已经保存到 SQLite 数据库。

Python实战:获取身份证前6位归属地_第6张图片

四、总结

有的时候编程不难,关键是要找到一个好的数据源。

通过这篇文章,我们学会了如何使用 Python 获取身份证前六位的归属地信息。希望这篇文章对你有所帮助,让你在 Python 编程和数据处理方面取得更多的进步!

本文首发在“程序员coding”公众号,欢迎关注与我一起交流学习。

本文数据集已经上传到公众号,后台回复“身份证”可以自取。

你可能感兴趣的:(python,php,开发语言)