excel表格中身份证信息提取出生年月日,年龄,性别,出生地

excel表格中身份证信息提取出生年月日,年龄,性别,出生地

在这里插入图片描述

身份证号码的意义

①前1、2位数字表示:所在省份的代码,河南的省份代码是41哦!
②第3、4位数字表示:所在城市的代码;
③第5、6位数字表示:所在区县的代码;
④第7~14位数字表示:出生年、月、日;
⑤第15、16位数字表示:所在地的派出所的代码;
⑥第17位数字表示性别:奇数表示男性,偶数表示女性;
⑦第18位数字是校检码:也有的说是个人信息码,一般是随计算机随机产生,用来检验身份证的正确性。校检码可以是0~9的数字,有时也用x表示10。

1.年龄

=YEAR(NOW())-MID(A2,7,4)
  1. =YEAR(NOW()) 这个函数,这个代表当前日期年份
  2. 用当前年份减出生年份,也就是身份证号第7位数字的后4个数字,
  3. 函数为mid(A2,7,4)
  4. A2代表身份证所在单元格,
  5. 7表示从第7位开始,
  6. 4表示选取4个数字。

2.出生年月

=TEXT(MID(A2,7,8),"0000年00月00日")
  1. 其中的A2表示的是身份证号码处在第A列第二行,
  2. 7表示的是从第7位开始,
  3. 8表示的是出生年月的8位,
  4. "0000-00-00"表示按照年月日的方式输出,年份占4位,月份和日期各占2位

3.性别

=IF(MOD(MID(A2,17,1),2),"男","女")

4.代码实现 出生地

在这里插入图片描述

https://qq.ip138.com/idsearch/index.asp(百度搜索身份证归属地查询第一个就是)。你在这个网站上输入身份证号码,它就会给你把性别、生日、户籍地给你弄出来。

接下来用爬虫实现

根据身份证号码获取户籍地、出生年月等信息

提前下载包

  1. pandas
  2. lxml
  3. openpyxl

下载通用命令加速版:
pip install 包名 -i https://pypi.douban.com/simple

# 把需要用到的库一股脑import进来
import importlib, sys
importlib.reload(sys)

import time
import pandas as pd
import urllib.request
from lxml import etree

start = time.time()

# 先将存有身份证号码信息的txt文件读取进来
df = pd.read_table('E:/SFZ.txt', sep='\t', header=None, dtype=str, na_filter=False)

# 定义接下来存储身份证号码、性别、生日、户籍地信息的4个list
idcard = []
sex1 = []
birthday1 = []
address1 = []


# 通过循环,依次将每个身份证号码对应的信息获取
for i in range(df.shape[0]):
    # 多一个try,防止某个号码出差自己中止代码执行
    try:
        # print (df.iloc[i,0])
        # 查看身份证查询网页的网址,发现规律,按照规律组成url
        url = "https://qq.ip138.com/idsearch/index.asp?userid=" + df.iloc[i, 0] + "&action=idcard"

        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36'
        }

        # 获取内容
        request = urllib.request.Request(url=url, headers=headers)
        res = urllib.request.urlopen(request)
        content = res.read().decode('utf-8')

        # 解析网页源码 获取我们需要的数据
        tree = etree.HTML(content)
        sex = tree.xpath('//div[@class="bd"]//tbody/tr[2]/td[2]/p/text()')[0]
        birthday = tree.xpath('//div[@class="bd"]//tbody/tr[3]/td[2]/p/text()')[0]
        address = tree.xpath('//div[@class="bd"]//tbody/tr[5]/td[2]/p/text()')[0]

        # 添加到列表
        idcard.append(df.iloc[i, 0])
        sex1.append(sex)
        birthday1.append(birthday)
        address1.append(address)

    except Exception as e:
        print(Exception, ":", e)

# 打包数据
data = pd.DataFrame({'身份证号': idcard, '性别': sex1, '出生日期': birthday1, '所属地区': address1})
print(data)

# # 将数据输出成一个excel文件
pd.DataFrame.to_excel(data, "E:\\person_card.xlsx", header=True, encoding='gbk', index=False)

end = time.time()
print(u'OK,爬虫结束!')
print(u'总共耗时:' + str(end - start) + '秒')

1.报错:ModuleNotFoundError: No module named 'pandas'

在这里插入图片描述

  1. win+R
  2. cmd
  3. 输入:
pip install pandas -i https://pypi.douban.com/simple
  1. 回车

在这里插入图片描述

2.报错:ModuleNotFoundError: No module named 'lxml'

在这里插入图片描述

  1. win+R
  2. cmd
  3. 输入:
pip install lxml -i https://pypi.douban.com/simple
  1. 回车
    在这里插入图片描述

3.报错:ModuleNotFoundError: No module named 'openpyxl'

在这里插入图片描述

  1. win+R
  2. cmd
  3. 输入:
pip install openpyxl -i https://pypi.douban.com/simple
  1. 回车
    在这里插入图片描述

4.最终成功输出一个Excel表格

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

848698119

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值