【小知识点】Python随机生成 Phone 号码,测试用~

文章介绍了如何使用Python的random模块生成随机手机号码,以及如何在Flask框架中创建一个API接口,返回生成的手机号码作为JSON数据,供爬虫或其他应用使用。此外,还展示了如何生成大量手机号码的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

随机手机号码

在爬虫实战中,有一项数据是不能采集的,这个数据就是电话号,所以本篇博客补充这个小知识点,用 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())

因为时间戳每次都不相同,所有可以用作随机生成号码。
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

梦想橡皮擦

如有帮助,来瓶可乐

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

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

打赏作者

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

抵扣说明:

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

余额充值