小知识点Python随机生成 Phone 号码,测试用~
Posted 梦想橡皮擦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小知识点Python随机生成 Phone 号码,测试用~相关的知识,希望对你有一定的参考价值。
Python 随机生成 Phone 号码
随机手机号码
在爬虫实战中,有一项数据是不能采集的,这个数据就是电话号,所以本篇博客补充这个小知识点,用 Python 随机生成电话号,便于后续使用。
在 Python 中生成电话号码,你可以使用 random
模块来生成随机的前缀和后缀,再将它们组合起来即可。
示例代码如下所示:
import random
def generate_phone_number():
# 随机生成电话号码的前缀
prefix = random.choice(['130', '131', '132', '133', '134', '135', '136', '137', '138', '139',
'150', '151', '152', '153', '155', '156', '157', '158', '159',
'180', '181', '182', '183', '184', '185', '186', '187', '188', '189'])
# 随机生成电话号的后缀
suffix = ''.join(random.choice(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']) for _ in range(8))
# 将前缀和后缀组合起来,生成电话号
return prefix + suffix
phone_number = generate_phone_number()
print(phone_number)
然后我们将上述代码封装到爬虫训练场中,形成一个新的 API 接口,便于后续使用。
在 Python Flask 中返回 JSON 数据,用到 jsonify()
函数,它可以将 Python 字典转换为 JSON 格式的字符串,作为 HTTP 响应主体返回。
@api.route('/phone')
def phone():
def generate_phone_number():
# 随机生成电话号的前缀
prefix = random.choice(['130', '131', '132', '133', '134', '135', '136', '137', '138', '139',
'150', '151', '152', '153', '155', '156', '157', '158', '159',
'180', '181', '182', '183', '184', '185', '186', '187', '188', '189'])
# 随机生成手机号码的后缀
suffix = ''.join(random.choice(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']) for _ in range(8))
# 将前缀和后缀组合起来,生成电话号
return prefix + suffix
phone_number = generate_phone_number()
phone =
'phone': phone_number
return jsonify(phone)
该接口已经部署到 爬虫训练场,欢迎测试使用。
Python 生成一亿个手机号
这是群友提出的一个小诉求,他希望能用 Python 快速的生成大量手机号。
import random
import string
def create_phone(num):
all_phone_nums = set()
while True:
start = random.choice(['186', '187', '155'])
end = ''.join(random.sample(string.digits, 8)) # 随机生成后8位数
all_phone_nums.add(f'startend') # 拼接手机号
print(all_phone_nums)
if len(all_phone_nums) >= num: # 死循环停止条件
break
create_phone(10000 * 10000)
上述代码用到了 string.digits
,这是一个字符串常量,其余常量清单如下。
string.digits
:包含数字 0~9 的字符串;string.ascii-letters
:包含所有字母;string.lowercase
:包含所有小写字母的字符串;string.printable
:包含所有可打印字符的字符串;string.punctuation
:包含所有标点的字符串;string.uppercase
:包含所有大写字母的字符串。
都是随机生成的,打不通的哦~
用 time 模块生成
实战中要想得到随机数字,还可以使用时间戳实现,例如下述代码
import time
import random
def get_phone():
mobiles = ['180', '181', '182', '183', '184']
number = str(int(time.time()))[2:]
mobile = random.choice(mobiles) + number
return mobile
print(get_phone())
因为时间戳每次都不相同,所有可以用作随机生成号码。
以上是关于小知识点Python随机生成 Phone 号码,测试用~的主要内容,如果未能解决你的问题,请参考以下文章