Python实战社群

Java实战社群

长按识别下方二维码,按需求添加

扫码关注添加客服

进Python社群▲

扫码关注添加客服

进Java社群

作者丨星安果

来源丨AirPython

1

目 标 场 景

平时在工作过程中,偶尔会需要大量的 手机号码,去测试一些具体的业务功能,为了保证测试的有效性,手机号码的 真实性 尤为的重要。

那如何按要求 批量生成 一些真实的手机号码呢?

本篇文章的目的是带大家利用 Python 批量生成手机号码。

2

编 写 代 码

要批量生成手机号码,首先需要了解 11 位手机号码的组成规律,即:

  • 手机号码一共有 11 位,以 1 开头

  • 第 2 位的数值是 3、4、5、7、8 中的一个

  • 第 3 位根据第 2 位的数字,对应运营商的生成规律

  • 后 8 位是随机生成的 8 个数字

知道手机号码的组成规律后,接着把数字拼接起来,即可以生成一个手机号码。

def create_a_phone():# 第二位数字second = [3, 4, 5, 7, 8][random.randint(0, 4)]# 第三位数字third = {3: random.randint(0, 9),4: [5, 7, 9][random.randint(0, 2)],5: [i for i in range(10) if i != 4][random.randint(0, 8)],7: [i for i in range(10) if i not in [4, 9]][random.randint(0, 7)],8: random.randint(0, 9), }[second]# 最后八位数字suffix = random.randint(9999999, 100000000)# 拼接手机号return "1{}{}{}".format(second, third, suffix)

由于三大运营商的号段一直在更新变化,上面组成的手机号码也有可能不是一个有效的号码。

为了保证号码的真实性,利用号码去获取 手机号码归属地,如果能获取到归属地,即代表为一个真实有效的号码。

淘宝和百度都提供了查询归属地的 API,可以非常方便的查询号码的归属地。

def judge_phone_ava(phone):"""判断手机号码是否合理:param phone:手机号码:return:"""resp_content = requests.get('http://mobsec-dianhua.baidu.com/dianhua_api/open/location?tel=%s' % phone).contenttxt = json.loads(resp_content)result = txt.get('response').get(phone)return result

循环上面的操作,可以生成一些随机的手机号码,正因为生成号码的随机性,使得数据的价值性大打折扣。

如果我需要批量生成指定城市的手机号码,上面的这种方法没法做到。幸运地是,有一个网站(阅读原文)已经实现了这个功能,我们只需要用 Python 模拟请求即可。

选择手机号码归属地、包含号段、数量,就能快速生成我们想要的手机号码,按 F12 可以查看网络请求方式及参数。

请求参数中的区域代码对应选择的省+市区,这部分数据利用 JS 加载到页面中了。

我们只需要解析网页源代码,利用正则表达式查找对应的字符串,解析出 区域 ID 和城市名称

def get_all_citys():"""获取所有的城市数据:return:"""headers = {'authority': 'uutool.cn','pragma': 'no-cache','cache-control': 'no-cache','upgrade-insecure-requests': '1','user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36','sec-fetch-user': '?1','accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9','sec-fetch-site': 'none','sec-fetch-mode': 'navigate','accept-encoding': 'gzip, deflate, br','accept-language': 'zh-CN,zh;q=0.9,en;q=0.8','cookie': 'UM_distinctid=16f759fe6bd24b-0322efd0d180d8-1d376b5b-1aeaa0-16f759fe6beb69; CNZZDATA1275106188=191793625-1578225029-https%253A%252F%252Fwww.google.com%252F%7C1578316721',}resp = requests.get('https://uutool.cn/phone-generate/', headers=headers).textre_rule = r'areaArr:(.+?)segmentArr:'# 匹配换行符result_data = re.findall(re_rule, resp, re.S)[0].strip()[:-1]result = json.loads(result_data)# 获取所有的省份provices = result.keys()# 所有的城市citys = {}for provice in provices:current_citys = result.get(provice)# citys.extend(current_citys)for item in current_citys:citys[item.get('name')] = item.get('id')return citys

拿到城市名称和区域 ID 的关系数据后,模拟网络请求,即可以批量生成目标城市的手机号码。

citys = get_all_citys()city_name = input('请输入手机归属地:')if city_name not in citys.keys():city_name = '北京'# 获取城市id
city_id = citys.get(city_name)phones = generate_phones(num, city_id)# pass

3

结 果 结 论

通过上面的操作,就能按照自己的需求,批量生成一些真实有效的手机号码。

接下来,可以结合自动化操作,可以使得我们生成的数据价值最大化。

程序员专栏 扫码关注填加客服 长按识别下方二维码进群近期精彩内容推荐:   再见,纸币!中国成全球首个数字货币国家! 张一鸣:为什么BAT挖不走我们的人才? 记一次 Python Web 接口优化 Java new一个对象时发生了什么?在看点这里好文分享给更多人↓↓

Python 帮你批量生成手机号码相关推荐

  1. python制作合同模板带图片_办公自动化7_用Python操作Word批量生成合同

    ########## 实例7:用Python操作Word批量生成合同 ################ ''' 来源网上整理 ,供学习使用. 我们建立的模板和合同信息如下图所示:这里有几个注意事项: ...

  2. python办公自动化之批量生成docx——根据excel生成word、根据word生成excel

    python办公自动化之批量生成docx--根据excel生成word 系列文章 本文目录 一.从excel读取 二.写入docx 三.批量生成docx 四.反向操作,根据word生成excel 系列 ...

  3. Python办公自动化|批量生成请假条

    大家好,我是早起. 本文就将基于一个真实的办公案例进行讲解如何提取Excel内容并创建Word,主要将涉及以下三个知识点 " openpyxl 读取 Excel 文件 python-docx ...

  4. python教程112-Python批量生成合同文档

    Python可是实现办公自动化的利器,本文使用Python批量生成合同,学会这个即可解决重复制作合同的问题 开发系统 :window10家庭版 示例工具:anconda3.7 python3.8 本文 ...

  5. 用Python写一个批量生成账号的函数(用户控制数据长度、数据条数)

    # 1.写一个函数,批量生成一些注册使用的账号:产生的账号是以@163.com结尾,长度由用户输入,产生多少条也由用户输入,用户名不能重复,用户名必须由大写字母.小写字母.数字组成 import ra ...

  6. 【Python】用 Python 帮财务小妹生成 Excel 报表,小妹直说一辈子。。。

    财务小妹 萝卜哥,求助! 人有三急,回见~ 萝卜 财务小妹 别啊,不能去! 这,到底啥事啊 萝卜 财务小妹 有一个超级繁琐的事情,不过感觉你和Python能帮我 那你学Python吧,毕竟我也不能帮你 ...

  7. python 连接数据库并批量生成数据

    自己在电脑上搭建了一个数据库,并用Python连接了一下,因为是刚搭建的,没有数据,就通过py生成了一些数据,写的比较粗糙.勿喷!废话不多说上代码! import pymysql # 导入mysql库 ...

  8. 使用python的fpdf批量生成pdf文件

    1.首先cmd下载fpdf包 pip install fpdf 2.调用fpdf包,先实现写入数据的功能 from fpdf import FPDF pdf=FPDF() pdf.add_page() ...

  9. 用 Python 帮财务小妹生成 Excel 报表,小妹直说一辈子。。。

    公众号后台回复"图书",了解更多号主新书内容 作者:周萝卜 来源:萝卜大杂烩 财务小妹 萝卜哥,求助! 人有三急,回见~ 萝卜 财务小妹 别啊,不能去! 这,到底啥事啊 萝卜 财务 ...

最新文章

  1. el-input中设置onkeypress事件是否匹配正则表达式显示输入内容的格式
  2. yum 安装mysql 5.0_CentOS 通过 yum 安装 Mysql 5.0
  3. eclipse添加windowsBuilder的方法
  4. 8光12电ERPS工业级环网交换机 PLC自动化环网柜一键环网交换机
  5. 软考网络工程师下午题知识点汇总
  6. CrossApp更新至0.3.3,推出JS体验版
  7. winform自定义panel控件
  8. 经典语录用心记忆,总有一句让你受益匪浅!
  9. Fibonacci Sum(二项式求和)
  10. 【Alpha版本】冲刺阶段 - Day7 - 靠泊
  11. 文件末尾eof_什么是EOF(文件末尾)? PHP,C ++,C,Python,Java的示例
  12. 微信小游戏|创建3D篮球小游戏项目
  13. 质量体系建设——质量sense
  14. Python 汽车之家 全系车型参数(包含历史停售车型)爬虫
  15. 内网搭建maven私库
  16. 小程序底部tabBar购物车右上角增加数字
  17. 【多目标跟踪】Deep SORT: Simple Online and Realtime Tracking with a Deep Association Metric阅读笔记
  18. android计算器布局
  19. 《给讨厌数学的人》读后感
  20. 第十届数学建模新生杯比赛(A题)

热门文章

  1. 01.尚硅谷网课1-前端简介
  2. 图形验证码的两种实现方式
  3. CentOS 之 make 安装
  4. 一次耐人寻味的SQL优化:除了SQL改写,还要考虑什么?
  5. php getter,IntelliJ IDEA生成Getter和Setter方法
  6. JAVA两个表相关联_java实现两张表的关联查询(非数据库语言)
  7. 原装苹果手机_苹果手机换屏的“学问”这么多,一招教你快速辨别iPhone X原装屏...
  8. 个人对专注力的一点看法
  9. E71-433MS30芯片(CC1310无线模块 )mosbus协议通信(主机)
  10. vue3.0项目 npm run build 编译