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实现矩阵乘法的方法
Jun 28 Python
Python多进程分块读取超大文件的方法
Apr 13 Python
利用Python开发实现简单的记事本
Nov 15 Python
python数据类型_元组、字典常用操作方法(介绍)
May 30 Python
kaggle+mnist实现手写字体识别
Jul 26 Python
Python中利用aiohttp制作异步爬虫及简单应用
Nov 29 Python
pyqt5之将textBrowser的内容写入txt文档的方法
Jun 21 Python
django的聚合函数和aggregate、annotate方法使用详解
Jul 23 Python
命令行运行Python脚本时传入参数的三种方式详解
Oct 11 Python
python进程的状态、创建及使用方法详解
Dec 06 Python
windows上彻底删除jupyter notebook的实现
Apr 13 Python
Python实现动态循环输出文字功能
May 07 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
.htaccess文件保护实例讲解
2011/02/06 PHP
jquery 操作DOM案例代码分享
2012/04/05 Javascript
网站404页面3秒后跳到首页的实例代码
2013/08/16 Javascript
json数据的列循环示例
2013/09/06 Javascript
jQuery Migrate 1.1.0 Released 注意事项
2014/06/14 Javascript
javascript运动框架用法实例分析(实现放大与缩小效果)
2016/01/08 Javascript
AngularJS实现按钮提示与点击变色效果
2016/09/07 Javascript
浅谈js中的变量名和函数名重名
2017/02/13 Javascript
作为老司机使用 React 总结的 11 个经验教训
2017/04/08 Javascript
Vee-Validate的使用方法详解
2017/09/22 Javascript
ajax请求+vue.js渲染+页面加载的示例
2018/02/11 Javascript
详解webpack-dev-server的简单使用
2018/04/02 Javascript
解决Layui中layer报错的问题
2019/09/03 Javascript
vue使用prop可以渲染但是打印台报错的解决方式
2019/11/13 Javascript
VueJS实现用户管理系统
2020/05/29 Javascript
Vue的v-model的几种修饰符.lazy,.number和.trim的用法说明
2020/08/05 Javascript
[10:07]2014DOTA2国际邀请赛 实拍选手现场观战DK对阵Titan
2014/07/12 DOTA
python实现udp数据报传输的方法
2014/09/26 Python
Django中对通过测试的用户进行限制访问的方法
2015/07/23 Python
python 信息同时输出到控制台与文件的实例讲解
2018/05/11 Python
django drf框架中的user验证以及JWT拓展的介绍
2019/08/12 Python
python垃圾回收机制(GC)原理解析
2019/12/30 Python
基于python-pptx库中文文档及使用详解
2020/02/14 Python
使用K.function()调试keras操作
2020/06/17 Python
Python 字典一个键对应多个值的方法
2020/09/29 Python
德国家具在线:Fashion For Home
2017/03/11 全球购物
Antonioli美国在线商店:时尚前卫奢华
2019/07/29 全球购物
写给女生的道歉信
2014/01/08 职场文书
新春寄语大全
2014/04/09 职场文书
触电现场处置方案
2014/05/14 职场文书
增员口号大全
2014/06/18 职场文书
2015年党员自我剖析材料
2014/12/17 职场文书
学校拾金不昧表扬信
2015/01/16 职场文书
2015年小学开学寄语
2015/02/27 职场文书
2016银行招聘自荐信
2016/01/28 职场文书
聊聊JS ES6中的解构
2021/04/29 Javascript