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语言技巧之三元运算符使用介绍
Mar 04 Python
更改Python命令行交互提示符的方法
Jan 14 Python
Python解析excel文件存入sqlite数据库的方法
Nov 15 Python
Python实现GUI学生信息管理系统
Apr 05 Python
关于python中plt.hist参数的使用详解
Nov 28 Python
Python sys模块常用方法解析
Feb 20 Python
浅谈tensorflow模型保存为pb的各种姿势
May 25 Python
pytorch判断是否cuda 判断变量类型方式
Jun 23 Python
python使用nibabel和sitk读取保存nii.gz文件实例
Jul 01 Python
pytorch 多分类问题,计算百分比操作
Jul 09 Python
python爬虫scrapy框架之增量式爬虫的示例代码
Feb 26 Python
python绘制汉诺塔
Mar 01 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
PHP完整的日历类(CLASS)
2006/11/27 PHP
分享一个PHP数据流应用的简单例子
2012/06/01 PHP
在openSUSE42.1下编译安装PHP7 的方法
2015/12/24 PHP
PHP微信开发之查询微信精选文章
2016/06/23 PHP
jQuery 图像裁剪插件Jcrop的简单使用
2009/05/22 Javascript
jquery 多行滚动代码(附详细解释)
2010/06/17 Javascript
JS页面延迟执行一些方法(整理)
2013/11/11 Javascript
JS onmousemove鼠标移动坐标接龙DIV效果实例
2013/12/16 Javascript
利用Jquery实现可多选的下拉框
2014/02/21 Javascript
原生JavaScript编写俄罗斯方块
2015/03/30 Javascript
JavaScript 模块化编程(笔记)
2015/04/08 Javascript
基于javascript实现checkbox复选框实例代码
2016/01/28 Javascript
jQuery实时显示鼠标指针位置和键盘ASCII码
2016/03/28 Javascript
jQuery原理系列-css选择器的简单实现
2016/06/07 Javascript
Bootstrap table 定制提示语的加载过程
2017/02/20 Javascript
用angular实现多选按钮的全选与反选实例代码
2017/05/23 Javascript
javascript按钮禁用和启用的效果实例代码
2017/10/29 Javascript
简单易扩展可控性强的Jquery转盘抽奖程序
2019/03/16 jQuery
7个好用的JavaScript技巧分享(译)
2019/05/07 Javascript
taro开发微信小程序的实践
2019/05/21 Javascript
解决vue打包 npm run build-test突然不动了的问题
2020/11/13 Javascript
python实现批量注册网站用户的示例
2019/02/22 Python
Python实现中值滤波去噪方式
2019/12/18 Python
Pytorch之parameters的使用
2019/12/31 Python
美国领先的医疗警报服务:Philips Lifeline
2018/03/12 全球购物
意大利一家专营包包和配饰的网上商店:Borse Last Minute
2019/08/26 全球购物
Emma Bridgewater官网:英国餐具制造商
2019/11/24 全球购物
牵手50新加坡:专为黄金岁月的单身人士而设的交友网站
2020/08/16 全球购物
安德玛菲律宾官网:Under Armour菲律宾
2020/07/28 全球购物
工会主席岗位责任制
2014/02/11 职场文书
2014年预备党员学习两会心得体会
2014/03/17 职场文书
房屋租赁授权委托书范本
2014/09/20 职场文书
退休党员个人对照检查材料思想汇报
2014/09/29 职场文书
优秀员工事迹材料
2014/12/20 职场文书
迎新生晚会主持词
2015/06/30 职场文书
Spring整合Mybatis的全过程
2021/06/28 Java/Android