python爬虫

您所在的位置:网站首页 湖南出生地以及户口所在地对照表湖南 python爬虫

python爬虫

2024-07-06 09:42:55| 来源: 网络整理| 查看: 265

python爬虫--根据身份证号码获取户籍地、出生年月等信息 一、背景二、代码部分完整代码

一、背景

工作中偶尔会遇到这样的情况,给你一堆客户身份证号码,然后要你把对应的性别、生日、户籍地等信息弄出来。

最常用的方法就是用excel表套公式,这个方式如果用来取性别、生日这些信息的话问题不大,毕竟这些规则还好梳理,但是如果想要弄户籍地(如:广东省 广州市 荔湾区),操作难度极大。首先,你要弄到相应的行政区划代码,如广东省广州市天河区是440106,要注意,这些区划代码因为行政区划的调整,是有很多变化的,而且还是时时调整的,反正让我去收集这么一个表出来,我是做不到了。

由于以上原因,我只能另想其他办法了。

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

看到这个网站就想,如果能让代码把身份证号码一个一个到网站上遍历一遍,然后把这些信息扒下来不就行了??

说干就干!

原网页元素对应位置 二、代码部分

这里用到的是python,整体的思路:

1、把要处理的身份证读入

2、设置循环,一个一个获取身份证号码对应的信息

3、分析页面的html,把目标信息取出

4、把获取的信息打包,输出成一个excel文件

第一步,读入身份证号码很简单,用pandas的read_csv读入即可,这里以txt文件为例,格式如下: 在这里插入图片描述 代码如下(如果是.xlsx或.csv文件,做个简单处理即可)

import pandas as pd df = pd.read_table('E:/SFZ.txt', sep='\t', header=None, dtype=str, na_filter=False) # 读csv文件 # df = pd.read_csv('E:/SFZ.csv', header=None, dtype=str, na_filter=False)

第二步,设置循环很简单,关键是怎么才能做到每次查询对应的身份证号码信息。常规套路,先看一下网址url,上图的url是:https://qq.ip138.com/idsearch/index.asp?userid=440103198007314832&action=idcard,细细一看发现要查询的身份证号码也在url中(其实很多网页都会把输入的查询内容整到url上),大胆猜想一下,是不是url就是由三部分组成:“https://qq.ip138.com/idsearch/index.asp?userid=”+身份证号码+"&action=idcard" 。多拿几个号码输入测试一下,没问题。(有时如果没有规律可循,一定要一个一个输入值)

接下就很简单了,写个for循环,每次根据身份证号码组成一个新的url,完成。

第三步,解析网页目标信息,用select、find、xpath都行,这里用xpath举例

# 演示单个身份证的查询 import urllib.request from lxml import etree url = 'https://qq.ip138.com/idsearch/index.asp?userid=220202202002020022&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] print(sex) print(birthday) print(address)

第四步,打包数据用pandas的to_excel即可,代码如下:

# 打包数据 data = pd.DataFrame({'身份证号': idcard, '性别': sex1, '出生日期': birthday1, '所属地区': address1}) # 将数据输出成一个excel文件 pd.DataFrame.to_excel(data, "E:\\person_card.xlsx", header=True, encoding='gbk', index=False) 完整代码 # 把需要用到的库一股脑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) + '秒') ''' 原网址 :https://qq.ip138.com/idsearch/index.asp 点击查询,网址变化: https://qq.ip138.com/idsearch/index.asp?userid=110101191909091111&action=idcard https://qq.ip138.com/idsearch/index.asp?userid=220202202002020022&action=idcard '''

执行结果如下: 请添加图片描述



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭