python利用faker库批量生成测试数据


Posted in Python onOctober 15, 2020

安装

pip install faker

使用

简单使用

本库可生成姓名、地址、电话、邮箱、公司等等一系列数据。首先导入库,实例化:

from faker import Faker
fake = Faker()

先看看正面生成一个人的姓名地址吧:

for _ in range(10):
  print(fake.name())
rs. Elizabeth Carter MD
Mark Obrien
Madeline Oliver
Ruth Newman
Lori Bennett
Victor Nolan
Bethany Mitchell
Steven Henderson
Shannon Burke
Christopher Pacheco
Morgan Hernandez

有时候我们并不想要英文数据,faker库支持中文数据,只需要设置一下。

from faker import Faker
fake = Faker(["zh_CN"])

zh_CN即代表中文。

需求1

了解一下都有哪些属性:

print(fake.name()) #姓名
  print(fake.address()) # 地址
  print(fake.phone_number()) #电话
  print(fake.email()) #邮箱 
  print(fake.company()) #公司
  print(fake.job()) # 职位
  print(fake.building_number()) #哪栋楼
  print(fake.city()) # 城市

这时候小编需要几万个假人的个人信息数据,就可以这样生成:

from faker import Faker

fake = Faker(["zh_CN"])
Faker.seed(0)
def get_person():
 key_list = ["姓名","电话","邮箱","地址","工作单位","职位","城市","银行卡号"]
 for _ in range(20000):
  info_list = [fake.name(),fake.phone_number(),fake.email(),fake.address(),fake.company(),fake.job(),fake.city(),fake.credit_card_number()]
  person_info = dict(zip(key_list,info_list))
  print(person_info)

生成如下数据(只截取了部分):

{'姓名': '廖红霞', '电话': '15087647593', '邮箱': 'xiasong@gmail.com', '地址': '澳门特别行政区丽华市崇文马街F座 187784', '工作单位': '立信电子科技有限公司', '职位': '调研员', '城市': '大冶县', '银行卡号': '630453513933'}
{'姓名': '柏秀梅', '电话': '18215871484', '邮箱': 'xiulan83@hotmail.com', '地址': '广东省兴城市花溪银川路y座 722018', '工作单位': '数字100信息有限公司', '职位': '保险精算师', '城市': '张家港县', '银行卡号': '347515917953308'}
{'姓名': '李龙', '电话': '18656012309', '邮箱': 'dshen@gmail.com', '地址': '青海省沈阳县龙潭合山路L座 508691', '工作单位': '济南亿次元网络有限公司', '职位': '运输经理/主管', '城市': '香港县', '银行卡号': '213145792302255'}
{'姓名': '李桂香', '电话': '14507698456', '邮箱': 'nacai@hotmail.com', '地址': '上海市太原县南长柳州路L座 661093', '工作单位': '思优网络有限公司', '职位': '电脑操作员/打字员', '城市': '秀芳市', '银行卡号': '4027142787890079'}
{'姓名': '龙杰', '电话': '14563812066', '邮箱': 'weichao@qiandeng.cn', '地址': '新疆维吾尔自治区六盘水市普陀长沙街S座 185124', '工作单位': '创汇网络有限公司', '职位': '飞行器设计与制造', '城市': '沈阳县', '银行卡号': '4977658236940223'}
{'姓名': '杨坤', '电话': '13690042294', '邮箱': 'fdu@zhangjiang.net', '地址': '黑龙江省建军市白云荆门路g座 704522', '工作单位': '通际名联科技有限公司', '职位': '美容顾问', '城市': '济南市', '银行卡号': '2284779361534920'}
{'姓名': '黄超', '电话': '13308731764', '邮箱': 'zhengjie@kt.cn', '地址': '澳门特别行政区宇市南溪东莞街z座 638930', '工作单位': '信诚致远网络有限公司', '职位': '研发总监/部长/专家', '城市': '秀芳县', '银行卡号': '2244711801320403'}
{'姓名': '徐丽丽', '电话': '14575868809', '邮箱': 'fpeng@63.cn', '地址': '江西省雪梅县新城王路p座 751744', '工作单位': '明腾科技有限公司', '职位': '机械机床', '城市': '马鞍山市', '银行卡号': '3527912560976700'}
{'姓名': '石磊', '电话': '13125185367', '邮箱': 'wanqiang@qiangyan.cn', '地址': '青海省岩市朝阳李路b座 153751', '工作单位': '鑫博腾飞网络有限公司', '职位': '网站运营专员', '城市': '桂兰县', '银行卡号': '4886841269611610'}
{'姓名': '金淑珍', '电话': '13476607541', '邮箱': 'tianjun@rl.cn', '地址': '内蒙古自治区淮安县永川海门路h座 475420', '工作单位': '雨林木风计算机网络有限公司', '职位': '数控编程', '城市': '晶市', '银行卡号': '3594262235833243'}
{'姓名': '田丽丽', '电话': '13261126486', '邮箱': 'liuqiang@gmail.com', '地址': '山东省涛市魏都郑州街X座 841892', '工作单位': '菊风公司网络有限公司', '职位': '首席财务官 CFO', '城市': '雷县', '银行卡号': '4173407970341489262'}
{'姓名': '马红梅', '电话': '18538640140', '邮箱': 'yangwang@wu.cn', '地址': '海南省长春市沙市深圳路d座 448298', '工作单位': '毕博诚信息有限公司', '职位': '浆纱工', '城市': '秀云市', '银行卡号': '4211669728457637780'}
{'姓名': '蔡涛', '电话': '15270930576', '邮箱': 'pengfang@hotmail.com', '地址': '陕西省伟市怀柔苏路N座 316756', '工作单位': '万迅电脑信息有限公司', '职位': '销售助理', '城市': '宇市', '银行卡号': '4566763373906032'}
{'姓名': '孔彬', '电话': '18523949184', '邮箱': 'clin@hotmail.com', '地址': '海南省淑珍市萧山昆明街s座 702163', '工作单位': '思优科技有限公司', '职位': '幕墙工程师', '城市': '平市', '银行卡号': '6540803513853342'}
{'姓名': '卢晨', '电话': '13347530481', '邮箱': 'minzeng@ming.cn', '地址': '江苏省浩县沙湾罗路X座 732455', '工作单位': '四通信息有限公司', '职位': '酒店前台', '城市': '桂珍县', '银行卡号': '374301912633401'}
{'姓名': '林丽丽', '电话': '13741953843', '邮箱': 'pcheng@gmail.com', '地址': '湖南省波市上街秦路j座 423793', '工作单位': '合联电子传媒有限公司', '职位': '加油站工作员', '城市': '凤英县', '银行卡号': '2689577403827786'}
{'姓名': '毛建华', '电话': '13235460305', '邮箱': 'wkong@hotmail.com', '地址': '江苏省建军市牧野上海路c座 351056', '工作单位': '创汇网络有限公司', '职位': '叉车/铲车工', '城市': '昆明县', '银行卡号': '213164887091665'}
{'姓名': '胡玉珍', '电话': '14521532302', '邮箱': 'lqiu@yahoo.com', '地址': '重庆市云县秀英吴路z座 327385', '工作单位': '天开网络有限公司', '职位': '牙科医生', '城市': '成都县', '银行卡号': '6589840761657001'}
{'姓名': '亓建华', '电话': '15543885643', '邮箱': 'xxu@jb.net', '地址': '新疆维吾尔自治区佛山县花溪南宁街z座 162029', '工作单位': '创亿科技有限公司', '职位': '情报信息分析人员', '城市': '慧县', '银行卡号': '4186428212917'}
{'姓名': '曾萍', '电话': '15864440644', '邮箱': 'yan36@hotmail.com', '地址': '陕西省淮安县白云郑街P座 605823', '工作单位': '维旺明信息有限公司', '职位': '生产/营运', '城市': '成县', '银行卡号': '3573781327166449'}

还是可以的吧。

需求2

小编需要一些网站信息数据,先看一下属性

print(fake.domain_name())#域名
  print(fake.image_url())#图片链接
  print(fake.uri()) #资源
  print(fake.url()) #url
  print(fake.ipv4())# ipv4
  print(fake.ipv6())#ip v6
  print(fake.port_number())#端口号

可以这样生成:

key_list = ["域名", "链接", "资源链接", "公司图片链接", "ipv4", "ipv6","端口号"]
 for _ in range(200):
  info_list = [fake.domain_name(),fake.url(),fake.uri(),fake.image_url(),fake.ipv4(),fake.ipv6(),fake.port_number()]
  website_info = dict(zip(key_list,info_list))
  print(website_info)
{'域名': 'xialiu.cn', '链接': 'https://www.jiamao.cn/', '资源链接': 'https://www.songhao.com/posts/list/search/about.asp', '公司图片链接': 'https://placekitten.com/676/966', 'ipv4': '52.60.145.21', 'ipv6': '3458:a748:e9bb:17bc:a3f2:c9c0:9c63:16b9', '端口号': 62522}
{'域名': 'peng.cn', '链接': 'https://60.cn/', '资源链接': 'http://fangzeng.cn/posts/category.html', '公司图片链接': 'https://www.lorempixel.com/655/1002', 'ipv4': '4.255.156.194', 'ipv6': 'ec18:8efb:d080:e66e:552f:233b:8c25:166a', '端口号': 26634}
{'域名': 'pingping.cn', '链接': 'https://www.juangao.cn/', '资源链接': 'https://www.22.com/list/privacy/', '公司图片链接': 'https://placekitten.com/801/564', 'ipv4': '115.113.118.232', 'ipv6': 'd344:7490:96fd:35d0:adf2:807:e521:4606', '端口号': 54974}
{'域名': 'mintang.org', '链接': 'https://91.cn/', '资源链接': 'https://www.dongguo.cn/tag/app/about/', '公司图片链接': 'https://placeimg.com/448/92/any', 'ipv4': '132.188.93.127', 'ipv6': '3042:e325:a28f:5ab0:1fdb:8b33:6d5:99e8', '端口号': 15688}
{'域名': 'lei.org', '链接': 'http://www.jiegang.cn/', '资源链接': 'https://www.gang.cn/app/post.htm', '公司图片链接': 'https://www.lorempixel.com/125/956', 'ipv4': '89.10.171.82', 'ipv6': 'e786:ab37:5bca:47be:4298:17c6:3308:fb2e', '端口号': 61632}
{'域名': 'zengfeng.cn', '链接': 'https://www.xiuyingkong.cn/', '资源链接': 'http://www.lin.cn/register.html', '公司图片链接': 'https://placeimg.com/731/795/any', 'ipv4': '112.50.240.108', 'ipv6': '55fe:a08e:143e:2e04:bdd7:d19c:753c:7c99', '端口号': 5989}
{'域名': 'duan.cn', '链接': 'http://pingyu.net/', '资源链接': 'http://daishen.cn/', '公司图片链接': 'https://www.lorempixel.com/327/490', 'ipv4': '29.66.209.53', 'ipv6': 'b3ab:1b2c:df26:f517:66fa:f98a:813:5d58', '端口号': 54817}
{'域名': 'wangfeng.cn', '链接': 'https://www.yangping.cn/', '资源链接': 'http://63.cn/', '公司图片链接': 'https://placeimg.com/170/267/any', 'ipv4': '58.184.19.84', 'ipv6': '3a8:9879:36a9:8d74:de:59f6:50f0:fc2b', '端口号': 309}
{'域名': 'taoqiang.cn', '链接': 'https://www.tao.cn/', '资源链接': 'https://71.net/home.htm', '公司图片链接': 'https://placeimg.com/710/235/any', 'ipv4': '124.19.5.38', 'ipv6': 'ae55:cdff:34ab:18fd:a68:e88f:ad4:415', '端口号': 34035}
{'域名': 'zheng.com', '链接': 'https://www.wantan.cn/', '资源链接': 'https://www.gong.cn/main/main.htm', '公司图片链接': 'https://dummyimage.com/752x191', 'ipv4': '130.163.17.177', 'ipv6': 'fb5e:b866:2640:211e:29f2:c3c8:4505:f4f6', '端口号': 37949}
{'域名': 'yan.cn', '链接': 'http://junxiuying.cn/', '资源链接': 'https://www.87.cn/terms/', '公司图片链接': 'https://dummyimage.com/703x254', 'ipv4': '155.76.90.210', 'ipv6': 'bc18:a40b:55c7:ed9d:4d49:85dd:9ae:dbd0', '端口号': 20403}
{'域名': 'qianglei.org', '链接': 'https://www.30.cn/', '资源链接': 'https://www.xiulanwei.cn/', '公司图片链接': 'https://www.lorempixel.com/171/754', 'ipv4': '198.37.84.161', 'ipv6': '1d71:73e5:5bc7:fdeb:3123:4eff:6e64:8043', '端口号': 8369}
{'域名': 'yaocao.cn', '链接': 'https://www.yanxiong.cn/', '资源链接': 'http://www.dingshen.cn/', '公司图片链接': 'https://placeimg.com/831/866/any', 'ipv4': '26.81.152.72', 'ipv6': '7fa7:4d8a:ff88:ec82:7f99:d274:d562:7386', '端口号': 26475}
{'域名': 'zhang.cn', '链接': 'https://jun.cn/', '资源链接': 'https://www.juan.cn/app/main/privacy.html', '公司图片链接': 'https://www.lorempixel.com/460/267', 'ipv4': '92.181.175.8', 'ipv6': 'ccf7:19ab:2922:fbd8:dca5:b354:54a1:d505', '端口号': 19506}
{'域名': 'minlei.cn', '链接': 'https://www.89.org/', '资源链接': 'https://www.shen.net/list/explore/login/', '公司图片链接': 'https://placekitten.com/478/41', 'ipv4': '75.165.96.250', 'ipv6': '4124:405b:91fc:fe88:81c1:6e99:4d6c:d782', '端口号': 43605}
{'域名': '44.cn', '链接': 'http://www.wm.cn/', '资源链接': 'https://www.91.cn/search/', '公司图片链接': 'https://www.lorempixel.com/722/842', 'ipv4': '30.175.42.3', 'ipv6': 'c734:bb05:788c:31f6:19fa:a06f:c0a:5967', '端口号': 19840}
{'域名': '99.cn', '链接': 'http://jiexie.cn/', '资源链接': 'http://yongtan.org/', '公司图片链接': 'https://placeimg.com/606/260/any', 'ipv4': '50.205.173.81', 'ipv6': 'f521:ca9f:df5e:6f78:beeb:b4eb:eab9:221b', '端口号': 15932}

需求3

在爬虫过程中我们经常需要更换ua,一个一个去网上找岂不是太麻烦了,现在可以使用这个库直接生成,还可以挑选自己喜欢的浏览器:

for _ in range(20):
  print(fake.user_agent())
  print(fake.chrome())
  print(fake.firefox())
  print(fake.internet_explorer())
  print(fake.ios_platform_token())
  print(fake.opera())
  print(fake.safari())

结果如下:

Mozilla/5.0 (iPod; U; CPU iPhone OS 4_1 like Mac OS X; unm-US) AppleWebKit/534.3.3 (KHTML, like Gecko) Version/3.0.5 Mobile/8B115 Safari/6534.3.3
Mozilla/5.0 (Linux; Android 6.0) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/29.0.807.0 Safari/535.2
Mozilla/5.0 (X11; Linux i686; rv:1.9.5.20) Gecko/2020-05-30 04:42:27 Firefox/3.8
Mozilla/5.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; Trident/3.0)
iPad; CPU iPad OS 9_3_6 like Mac OS X
Opera/8.99.(Windows 95; pa-IN) Presto/2.9.164 Version/10.00
Mozilla/5.0 (Windows; U; Windows NT 6.1) AppleWebKit/535.44.4 (KHTML, like Gecko) Version/5.0.5 Safari/535.44.4
Mozilla/5.0 (Linux; Android 7.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/47.0.877.0 Safari/535.2
Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.0 (KHTML, like Gecko) Chrome/24.0.891.0 Safari/535.0
Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_10_6; rv:1.9.4.20) Gecko/2019-07-27 11:43:09 Firefox/11.0
Mozilla/5.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; Trident/4.1)
iPad; CPU iPad OS 9_3_6 like Mac OS X
Opera/9.63.(X11; Linux x86_64; nl-BE) Presto/2.9.182 Version/11.00

代码

from faker import Faker

fake = Faker(["zh_CN"])
Faker.seed(0)
def get_person():
 key_list = ["姓名","电话","邮箱","地址","工作单位","职位","城市","银行卡号"]
 for _ in range(200):
  info_list = [fake.name(),fake.phone_number(),fake.email(),fake.address(),fake.company(),fake.job(),fake.city(),fake.credit_card_number()]
  person_info = dict(zip(key_list,info_list))
  print(person_info)
  # print(fake.name()) #姓名
  # print(fake.address()) # 地址
  # print(fake.phone_number()) #电话
  # print(fake.email()) #邮箱
  # print(fake.company()) #公司
  # print(fake.job()) # 职位
  # print(fake.building_number()) #哪栋楼
  # print(fake.city()) # 城市
  # print(fake.user_name())
  # print(fake.city_name())
  # print(fake.credit_card_expire())
  # print(fake.credit_card_number())

  # print(fake.domain_name())#域名
  # print(fake.image_url())#图片链接
  # print(fake.uri()) #资源
  # print(fake.url()) #url
  #
  # print(fake.ipv4())# ipv4
  # print(fake.ipv6())#ip v6
  # print(fake.port_number())#端口号

  #print(fake.paragraph())
  #print(fake.profile())

def get_website_info():
 key_list = ["域名", "链接", "资源链接", "公司图片链接", "ipv4", "ipv6","端口号"]
 for _ in range(200):
  info_list = [fake.domain_name(),fake.url(),fake.uri(),fake.image_url(),fake.ipv4(),fake.ipv6(),fake.port_number()]
  website_info = dict(zip(key_list,info_list))
  print(website_info)


def get_ua():
 for _ in range(20):
  print(fake.user_agent())
  print(fake.chrome())
  print(fake.firefox())
  print(fake.internet_explorer())
  print(fake.ios_platform_token())
  print(fake.opera())
  print(fake.safari())


if __name__ == '__main__':
 #get_person()
 #get_website_info()
 get_ua()

以上就是python利用faker库批量生成数据的详细内容,更多关于python faker库的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python使用paramiko模块实现ssh远程登陆上传文件并执行
Jan 27 Python
Python 爬虫图片简单实现
Jun 01 Python
python爬取m3u8连接的视频
Feb 28 Python
Python3中的列表生成式、生成器与迭代器实例详解
Jun 11 Python
Python 给屏幕打印信息加上颜色的实现方法
Apr 24 Python
Python实现制度转换(货币,温度,长度)
Jul 14 Python
python中几种自动微分库解析
Aug 29 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
Oct 17 Python
python opencv 实现对图像边缘扩充
Jan 19 Python
Python 自由定制表格的实现示例
Mar 20 Python
Python爬虫谷歌Chrome F12抓包过程原理解析
Jun 04 Python
python 使用tkinter与messagebox写界面和弹窗
Mar 20 Python
如何利用python检测图片是否包含二维码
Oct 15 #Python
用python实现一个简单计算器(完整DEMO)
Oct 14 #Python
python在linux环境下安装skimage的示例代码
Oct 14 #Python
python中如何使用虚拟环境
Oct 14 #Python
Python 3.9的到来到底是意味着什么
Oct 14 #Python
python破解同事的压缩包密码
Oct 14 #Python
如何Tkinter模块编写Python图形界面
Oct 14 #Python
You might like
加速XP搜索功能堪比vista
2007/03/22 PHP
PHP setcookie() cannot modify header information 的解决方法
2009/01/09 PHP
PHP操作XML作为数据库的类
2010/12/19 PHP
FirePHP 推荐一款PHP调试工具
2011/04/23 PHP
新手菜鸟必读:session与cookie的区别
2013/08/22 PHP
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
2014/06/19 PHP
php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
2015/12/07 PHP
PHP设计模式之模板方法模式实例浅析
2018/12/20 PHP
JavaScript基础知识之数据类型
2012/08/06 Javascript
js获取网页高度(详细整理)
2012/12/28 Javascript
JavaScript在for循环中绑定事件解决事件参数不同的情况
2014/01/20 Javascript
JavaScript数组深拷贝和浅拷贝的两种方法
2014/04/16 Javascript
Javascript获取当前日期的农历日期代码
2014/10/08 Javascript
Linux下编译安装php libevent扩展实例
2015/02/14 Javascript
JavaScript的Vue.js库入门学习教程
2016/05/23 Javascript
jquery实现全选、不选、反选的两种方法
2016/09/06 Javascript
Vue 2中ref属性的使用方法及注意事项
2017/06/12 Javascript
微信小程序 如何获取网络状态
2019/07/26 Javascript
vue自动化路由的实现代码
2019/09/30 Javascript
[47:52]完美世界DOTA2联赛PWL S2 PXG vs InkIce 第二场 11.26
2020/11/30 DOTA
Python字符和字符值(ASCII或Unicode码值)转换方法
2015/05/21 Python
python3实现全角和半角字符转换的方法示例
2017/09/21 Python
Python管理Windows服务小脚本
2018/03/12 Python
django中上传图片分页三级联动效果的实现代码
2019/08/30 Python
python求绝对值的三种方法小结
2019/12/04 Python
利用python制作拼图小游戏的全过程
2020/12/04 Python
美国最大的珠宝商之一:Littman Jewelers
2016/11/13 全球购物
旧时光糖果:Old Time Candy
2018/02/05 全球购物
Java面试中常遇到的问题,也是需要注意的几点
2013/08/30 面试题
无财产无子女离婚协议书范文
2014/09/14 职场文书
企业党的群众路线教育实践活动学习心得体会
2014/10/31 职场文书
社区工作者个人总结
2015/02/28 职场文书
辩论赛新闻稿
2015/07/17 职场文书
怎样写好演讲稿题目?
2019/08/21 职场文书
Python实现制作销售数据可视化看板详解
2021/11/27 Python
使用Python获取字典键对应值的方法
2022/04/26 Python