你还为没有数据测试而发愁吗?介绍一个专业Fake的python库,什么个人信息、IP、UserAgent统统搞定

admin 2021年1月21日15:16:03评论139 views字数 10851阅读36分10秒阅读模式
摘要

小编经常需要批量测试一些数据,有时候测试环境又暂时没数据,特意找了一下,发现有一个可批量生成数据的python库—-faker,现在就介绍一下它的使用方法,如果你不想一行一行输入代码,小编提供了完整测试代码,见文末代码章节。


小编经常需要批量测试一些数据,有时候测试环境又暂时没数据,特意找了一下,发现有一个可批量生成数据的python库—-faker,现在就介绍一下它的使用方法,如果你不想一行一行输入代码,小编提供了完整测试代码,见文末代码章节。

安装

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

结束

更多关于faker的内容请移步到其官网介绍faker库,关注下面的公众号获取更多爬虫内容,当然不关注也无所谓。
你还为没有数据测试而发愁吗?介绍一个专业Fake的python库,什么个人信息、IP、UserAgent统统搞定

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年1月21日15:16:03
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   你还为没有数据测试而发愁吗?介绍一个专业Fake的python库,什么个人信息、IP、UserAgent统统搞定https://cn-sec.com/archives/249842.html

发表评论

匿名网友 填写信息