【小知识点】Python随机生成 Phone 号码,测试用~
【摘要】 随机手机号码在爬虫实战中,有一项数据是不能采集的,这个数据就是电话号,所以本篇博客补充这个小知识点,用 Python 随机生成电话号,便于后续使用。在 Python 中生成电话号码,你可以使用 random 模块来生成随机的前缀和后缀,再将它们组合起来即可。示例代码如下所示:import randomdef generate_phone_number(): # 随机生成电话号码的前缀...
随机手机号码
在爬虫实战中,有一项数据是不能采集的,这个数据就是电话号,所以本篇博客补充这个小知识点,用 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'{start}{end}') # 拼接手机号
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())
因为时间戳每次都不相同,所有可以用作随机生成号码。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)