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 06 Python
Python合并多个装饰器小技巧
Apr 28 Python
Python安装第三方库及常见问题处理方法汇总
Sep 13 Python
Python使用matplotlib绘制余弦的散点图示例
Mar 14 Python
matlab中实现矩阵删除一行或一列的方法
Apr 04 Python
python 按照固定长度分割字符串的方法小结
Apr 30 Python
python try except 捕获所有异常的实例
Oct 18 Python
pyside+pyqt实现鼠标右键菜单功能
Dec 08 Python
python中通过selenium简单操作及元素定位知识点总结
Sep 10 Python
Django通用类视图实现忘记密码重置密码功能示例
Dec 17 Python
Python字典生成式、集合生成式、生成器用法实例分析
Jan 07 Python
Python创建文件夹与文件的快捷方法
Dec 08 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 header函数分析详解
2011/08/06 PHP
使用PHP导出Word文档的原理和实例
2013/10/21 PHP
php 中文字符串首字母的获取函数分享
2013/11/04 PHP
Codeigniter出现错误提示Error with CACHE directory的解决方案
2014/06/12 PHP
PHP Laravel 上传图片、文件等类封装
2017/08/16 PHP
PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
2020/01/23 PHP
javascript 页面划词搜索JS
2009/09/28 Javascript
JQuery 遮罩层实现(mask)实现代码
2010/01/09 Javascript
js解析与序列化json数据(一)json.stringify()的基本用法
2013/02/01 Javascript
5秒后跳转到另一个页面的js代码
2013/10/12 Javascript
jquery全选checkBox功能实现代码(取消全选功能)
2013/12/10 Javascript
javascript数据结构与算法之检索算法
2015/04/04 Javascript
JavaScript多图片上传案例
2015/09/28 Javascript
JS+HTML5手机开发之滚动和惯性缓动实现方法分析
2016/06/12 Javascript
详解js中Number()、parseInt()和parseFloat()的区别
2016/12/20 Javascript
函数四种调用模式以及其中的this指向
2017/01/16 Javascript
jQuery读取XML文件的方法示例
2017/02/03 Javascript
详解Javascript获取缓存和清除缓存API
2017/05/25 Javascript
JS实现问卷星自动填问卷脚本并在两秒自动提交功能
2020/06/17 Javascript
小程序红包雨的实现示例
2019/02/19 Javascript
原生JS实现天气预报
2020/06/16 Javascript
[04:29]2016国际邀请赛中国区预选赛Ehome战队教练采访
2016/06/27 DOTA
[01:06:18]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第二场 1月26日
2021/03/11 DOTA
Python3利用print输出带颜色的彩色字体示例代码
2019/04/08 Python
Django中ORM外键和表的关系详解
2019/05/20 Python
Python 函数用法简单示例【定义、参数、返回值、函数嵌套】
2019/09/20 Python
selenium+Chrome滑动验证码破解二(某某网站)
2019/12/17 Python
用什么库写 Python 命令行程序(示例代码详解)
2020/02/20 Python
Django中ORM找出内容不为空的数据实例
2020/05/20 Python
Python同时迭代多个序列的方法
2020/07/28 Python
Python:__eq__和__str__函数的使用示例
2020/09/26 Python
Html5 FileReader实现即时上传图片功能实例代码
2014/09/01 HTML / CSS
放飞梦想演讲稿
2014/05/05 职场文书
实习生工作证明范本
2014/09/14 职场文书
房屋财产继承协议书范本
2014/11/03 职场文书
详解Go语言中配置文件使用与日志配置
2022/06/01 Golang