python 神奇的第三方库 -Faker

在做数据处理和数据分析的时候,我们总是少不了测试数据,比如你想对设一个合理的数据清洗方案,但有的时候事先能够找一些样例做测试,但大多数的情况是我们自己构建一个测试数据。但对于我这个选择困难症的人,每次想名字或者定一些其他东西都是很纠结,前段时间在一篇微信推文上看到这个库,我觉得对我来说,受益匪浅。
Faker这个库简单来说,就是造假,具体怎么造假,我这篇博客会详细的介绍。

基本用法

安装

这个和其他python第三方库的安装没什么区别。

pip install Faker

安装完之后,我们可以先小试一下。

from faker import Faker
fake = Faker()#创建和初始化使用时需要先创建一个 Faker 对象,可通过访问你想要的数据类型来命名的属性生成的数据。
print("name:",fake.name())#生成名字
print("adderss:",fake.address())#生成一个地址
print("text:",fake.text())#生成一段文字

生成的结果是这样的:

name: Tracy Carey
adderss: 41817 Schultz Viaduct
Christopherview, NE 25060
text: Family station drive character condition.
Star herself its add seat. Reason sit clearly sign son whole professor.
Here major green level.
Every debate report well different. Fire full of force next.

是不是很简单,开始直接创建一个Faker对象,然后直接访问它的属性来命名就可以了。看完上面的示例,是不是对它产生了兴趣,下面我们正式开始了解一下吧。

创建对象

使用时需要先创建一个 Faker 对象,创建方法有两种,一种是直接通过构造函数来创建,另一种是通过工厂函数来创建。

from faker import Faker, Factory
fake1 = Factory.create() # 通过工厂函数来创建
print("name:",fake1.name()) # 随机生成一个姓名
fake2 = Faker() # 通过构造函数来创建
print("name:",fake2.name()) # 随机生成一个姓名

运行的结果如下:

name: Jodi Rodriguez
name: Madison Villa

同时我们发现每次生成的姓名都不一样,生成的数据随机而且不重复。保证了测试的数据有效性。在上面的测试中我们也发现默认生成的都是英文形式,那么我们平常一般研究测试的数据都是中文,该如何做,这个就涉及到本地配置。

本地配置

至于生出数据的语言,我们不用担心,这个库对非常多的语言都有支持,当然也包括中文了,它支持的语言有这些:

ar_EG-阿拉伯文(埃及)
ar_PS-阿拉伯语(巴勒斯坦)
ar_SA-阿拉伯语(沙特阿拉伯)
bg_BG-保加利亚语
bs_BA-波斯尼亚语
cs_CZ-捷克文
de_DE-德语
dk_DK-丹麦文
el_GR-希腊文
en_AU-英语(澳大利亚)
en_CA-英文(加拿大)
en_GB - 英语(英国)
en_NZ-英语(新西兰)
zh_CN-英语(美国)
es_ES-西班牙语(西班牙)
es_MX-西班牙语(墨西哥)
et_EE-爱沙尼亚语
fa_IR-波斯语(伊朗)
fi_FI-芬兰文
fr_FR-法语
hi_IN - 印地语
hr_HR-克罗地亚语
hu_HU-匈牙利语
hy_AM-亚美尼亚人
it_IT-意大利语
ja_JP-日语
ka_GE-格鲁吉亚(乔治亚州)
ko_KR-韩文
lt_LT-立陶宛语
lv_LV-拉脱维亚
ne_NP-尼泊尔文
nl_NL-荷兰语(荷兰)
no_NO-挪威文
pl_PL-波兰语
pt_BR-葡萄牙语(巴西)
pt_PT-葡萄牙语(葡萄牙)
ro_RO-罗马尼亚语
ru_RU-俄语
sl_SI-斯洛文尼亚
sv_SE-瑞典文
tr_TR-土耳其文
uk_UA-乌克兰语
zh_CN-中文(中国)
zh_TW-中文(台湾)

是不是很多,那么我们想改变语言,怎么操作呢?那么如果要生成中文,只需要在 Faker 类的第一个参数传入对应的语言代号即可,例如简体中文就传入 zh_CN,所以上面的代码改写如下:

from faker import Faker
faker = Faker('zh_CN')
print('name:', faker.name())
print('address:', faker.address())
print('text:', faker.text())

运行的结果就是这样的:

name: 刘淑兰
address: 天津市红霞县龙潭上海街q座 575937
text: 最后发布搜索环境学习.所有不能一般更多应该我的设计谢谢.如果等级能力质量系统.
问题时间位置单位那些这里什么.您的部分软件之后任何设计不同.工作更新电影工作历史结果标题.只有地方最新点击用户国家产品.
留言记者以上这是.方式详细其他国内使用.她的还是类型工作作品.推荐活动来源中心国家下载精华.
深圳一种一下其他专业回复.成为发表发布大学一切密码支持.工作这种本站社会大小使用.

可以看到一段中文的姓名、地址、长文本便生成了。看起来地址是省份、地级市、县级市、街道是随机组合的,文本也是一些随机的词组合而成的,但它基本很快就能生成,而且随机不重复。
你也可以试试其他语言只需要将上面参数稍微修改一下就可以了。

from faker import Faker
faker = Faker('ja_JP')
print('name:', faker.name())
print('address:', faker.address())
print('text:', faker.text())

生成的结果是:

name: 加藤 太郎
address: 兵庫県南房総市百村16丁目24番20号
text: 拡張トスコミュニケーション協力学生。建築仕上げ数字移動索引ダッシュ狐。
カレッジ雪ダニ葉見落とす意図。
発生する人形狐バス。知覚自体本質的なあなた自身持っていました立派な。学生差別するコンペ午前持つ仕上げ犯罪者電池。
自体動物サワーマリン。パーセント通行料金画面電話それ。大統領障害バス画面楽しんで明らかにする犯罪者トス。
近代化するバスケット学生同行特徴〜。欠乏ソース指名移動軸ブラケット。

常用功能

接下来让我们详细看下 faker 可以都生成什么类型的数据,具体的可用 API 可以看 https://faker.readthedocs.io/en/master/locales/zh_CN.html,这里面列出来了可用的所有方法。但打开这个官方文档,我们发现它比我们之前多了一个providers。
这里我参考了一下别人的解释:
实际上这个 faker 库在设计上,为了解耦,将 Provider 对象做成了 Faker 对象的”插件“。Faker 可以添加一个个 Provider 对象,Provider 对象为 Faker 对象提供了生成某项数据的核心实现。就相当于 Faker 对象是一个生成器,它的生成功能依赖于什么呢?依赖于 Provider,是 Provider 提供给了 Faker 对象生成某项数据的能力。正是因为 Faker 对象内置了一些 Provider 对象,Faker 对象才可以生成刚才所要求的姓名、地址和文本。
那么一个对象肯定也具备它的属性和行为,我们可以看看:

from faker import Faker
faker = Faker('zh_CN')
print(faker.providers)

这里我用的是简体中文,我们可以看看它有哪些:

[<faker.providers.user_agent.Provider object at 0x00000243C18FE518>, <faker.providers.ssn.zh_CN.Provider object at 0x00000243C18FE5F8>, <faker.providers.python.Provider object at 0x00000243C1911470>, <faker.providers.profile.Provider object at 0x00000243C189DC18>, <faker.providers.phone_number.zh_CN.Provider object at 0x00000243C1911400>, <faker.providers.person.zh_CN.Provider object at 0x00000243C1872978>, <faker.providers.misc.Provider object at 0x00000243C18FE6A0>, <faker.providers.lorem.zh_CN.Provider object at 0x00000243C18FE630>, <faker.providers.job.zh_CN.Provider object at 0x00000243C18FEA20>, <faker.providers.isbn.Provider object at 0x00000243C18FE780>, <faker.providers.internet.zh_CN.Provider object at 0x00000243C18FE898>, <faker.providers.geo.en_US.Provider object at 0x00000243C1872DA0>, <faker.providers.file.Provider object at 0x00000243C1872F60>, <faker.providers.date_time.en_US.Provider object at 0x00000243C1872B38>, <faker.providers.currency.Provider object at 0x00000243C1872D30>, <faker.providers.credit_card.Provider object at 0x00000243C1872CC0>, <faker.providers.company.zh_CN.Provider object at 0x00000243C18729E8>, <faker.providers.color.en_US.Provider object at 0x00000243C1872A90>, <faker.providers.barcode.Provider object at 0x00000243C1872EF0>, <faker.providers.bank.en_GB.Provider object at 0x00000243C17F3828>, <faker.providers.automotive.en_US.Provider object at 0x00000243C181F048>, <faker.providers.address.zh_CN.Provider object at 0x00000243C1872AC8>]

从中我们可以看到有很多数据类型,比如地址,手机号,时间等,而且其中具有语言差异化的 Provider 还单独区分了语言,比如 phone_number 代表电话号码,这个不同语言的不同,所以这里就又分了一层 zh_CN,作了语言的区分。这样一来,通用的 Provider 就直接处在某个 Provider 类别的模块中,具有语言差异的 Provider 就又根据不同的语言进一步划分了模块,设计上非常科学,易扩展又不冗余。
下面我们还是研究最开始的那个实例,我们可以看看:

from faker import Faker
faker = Faker('zh_CN')
print('name:', faker.name)
print('address:', faker.address)
print('text:', faker.text)

运行完之后的结果是:

name: <bound method Provider.name of <faker.providers.person.zh_CN.Provider object at 0x00000243C192DBE0>>
address: <bound method Provider.address of <faker.providers.address.zh_CN.Provider object at 0x00000243C192DC88>>
text: <bound method Provider.text of <faker.providers.lorem.zh_CN.Provider object at 0x00000243C1911588>>

原来我们调用的方法就是 Faker 对象调用的 Provider 里面的对应方法,比如 name 就是 faker.providers.person.zh_CN.Provider 里面的 name 方法,二者是一致的,有兴趣的话我们可以去看看源码,就能发现其中的神奇之处。

常用方法介绍

接下来我们来介绍每种方法的具体用法,为了方便,我用jupyter notebook来做,但方便观察,显示所有变量:

#显示所有变量
from IPython.core.interactiveshell import InteractiveShell 
InteractiveShell.ast_node_interactivity = 'all'
1.address

Address,用于生成一些和地址相关的数据,如地址、城市、邮政编码、街道等内容, 用法如下:

faker.address()#生成一个完整地址
faker.building_number()# 建筑编号
faker.city()# 城市
faker.city_name()# 城市名称
faker.city_suffix()## 市
faker.country()#国家
faker.country_code(representation="alpha-2")#国家编号
faker.district()# 区
faker.postcode()# # 邮政编码
faker.province()#省份
faker.street_address()#街道地址
faker.street_name()#街道名
faker.street_suffix() # 街道后缀

生成的结果是这样的:

'西藏自治区斌县普陀王街O座 458590'
'H座'
'娜县'
'惠州'
'县'
'几内亚'
'LA'
'淄川'
'415576'
'内蒙古自治区'
'长春路K座'
'兴安盟路'
'路'

上面这些方法基本涵盖了地址等相关信息的生成,为了我们造假带来了很多便利。

2.Color

Color,用于生成和颜色相关的数据,如 HEX、RGB、RGBA 等格式的颜色,用法如下:

faker.color_name()#  颜色名称
faker.hex_color()#  颜色 16 进制编号
faker.rgb_color() # 颜色的 rgb 值
faker.rgb_css_color()
faker.safe_color_name()#safe 颜色 16 进制编号
faker.safe_hex_color()# # safe颜色名称

结果如下:

'Aqua'
'#9b6905'
'96,163,82'
'rgb(195,225,74)'
'purple'
'#88ee00'
3.Company

用于生成公司相关数据,如公司名、公司前缀、公司后缀等内容,用法如下:

faker.bs()
faker.catch_phrase()
faker.company()
faker.company_prefix()
faker.company_suffix()

运行结果:

faker.bs()
faker.catch_phrase()
faker.company()#公司全名
faker.company_prefix()# 公司名前缀
faker.company_suffix()# 公司名后缀
4.automotive

生成一个随机的车牌号:

fake.license_plate()
# 'ON 27190'
5.bank

有的时候银行数据生成也是很有用的:

fake.bank_country()
fake.bban()
fake.iban()

运行的结果:

'GB'
'YIXF0427936377053'
'GB77DUFP7097616592682'
6.Credit Card

用于生成信用卡相关数据,如过期时间、银行卡号、安全码等内容,用法如下:

faker.credit_card_expire(start="now", end="+10y", date_format="%m/%y")  # 卡的有效期
faker.credit_card_full(card_type=None)# # 完整卡信息
faker.credit_card_number(card_type=None)# 卡号
faker.credit_card_provider(card_type=None)#卡的提供者
faker.credit_card_security_code(card_type=None)# 卡的安全密码

运行结果:

'11/25'
'VISA 16 digit\n平 邓\n4305839614896442 06/23\nCVC: 081\n'
'6011302612514442'
'VISA 16 digit'
'625'
7.条形码

商品等订单号相关的信息,用法如下:

fake.ean8()  # 8位条码
fake.ean13()  # 13位条码
fake.ean(length=8)  # 自定义位数条码,只能选8或者13

运行结果如下:

'68520298'
'3536224997491'
'37409982'
8.Date Time

用于生成时间相关数据,如年份、月份、星期、出生日期等内容,可以返回 datetime 类型的数据,用法如下:

fake.date_time(tzinfo=None) # 随机日期时间
fake.iso8601(tzinfo=None) # 以iso8601标准输出的日期
fake.date_time_this_month(before_now=True, after_now=False, tzinfo=None) # 本月的某个日期
fake.date_time_this_year(before_now=True, after_now=False, tzinfo=None) # 本年的某个日期
fake.date_time_this_decade(before_now=True, after_now=False, tzinfo=None)  # 本年代内的一个日期
fake.date_time_this_century(before_now=True, after_now=False, tzinfo=None)  # 本世纪一个日期
fake.date_time_between(start_date="-30y", end_date="now", tzinfo=None)  # 两个时间间的一个随机时间
fake.timezone() # 时区
fake.time(pattern="%H:%M:%S") # 时间(可自定义格式)
fake.am_pm() # 随机上午下午
fake.month() # 随机月份
fake.month_name() # 随机月份名字
fake.year() # 随机年
fake.day_of_week() # 随机星期几
fake.day_of_month() # 随机月中某一天
fake.time_delta() # 随机时间延迟
fake.date_object()  # 随机日期对象
fake.time_object() # 随机时间对象
fake.unix_time() # 随机unix时间(时间戳)
fake.date(pattern="%Y-%m-%d") # 随机日期(可自定义格式)
fake.date_time_ad(tzinfo=None)  # 公元后随机日期

运行结果如下:

datetime.datetime(1970, 11, 9, 22, 24, 21)
'1977-02-03T10:02:07'
datetime.datetime(2019, 9, 17, 1, 46, 50)
datetime.datetime(2019, 3, 22, 2, 58, 23)
datetime.datetime(2014, 11, 12, 23, 40, 37)
datetime.datetime(2002, 3, 27, 0, 39, 59)
datetime.datetime(2015, 5, 23, 7, 23, 25)
'Europe/Bucharest'
'15:26:20'
'PM'
'07'
'July'
'1988'
'Friday'
'08'
datetime.timedelta(0)
datetime.date(2019, 7, 6)
datetime.time(11, 0, 50)
562063785
'2010-04-21'
datetime.datetime(1452, 3, 5, 14, 21, 40)

时间相关数据在我们平常数据分析和数据处理也是很常见的,Faker这个第三方库针对其也为了它构造了很多造假函数用法。

9.Geo

用于生成和地理位置相关的数据,包括经纬度,时区等等信息,用法如下:

faker.coordinate(center=None, radius=0.001)
faker.latitude()
faker.latlng()
faker.local_latlng(country_code="US", coords_only=False)
faker.location_on_land(coords_only=False)
faker.longitude()

运行结果:

Decimal('6.063023')
Decimal('-46.376319')
(Decimal('-70.652714'), Decimal('107.153490'))
('33.98154', '-81.23621', 'Lexington', 'US', 'America/New_York')
('34.65918', '109.22921', 'Yanliang', 'CN', 'Asia/Shanghai')
Decimal('-103.117869')
10.Internet

用于生成和互联网相关的数据,包括随机电子邮箱、域名、IP 地址、URL、用户名、后缀名等内容,用法如下:

fake.ipv4(network=False)  # ipv4地址
fake.ipv6(network=False)  # ipv6地址
fake.uri_path(deep=None) # uri路径
fake.uri_extension() # uri扩展名
fake.uri() # uri
fake.url() # url
fake.image_url(width=None, height=None)  # 图片url
fake.domain_word() # 域名主体
fake.domain_name() # 域名
fake.tld() # 域名后缀
fake.user_name() # 用户名
fake.user_agent() # UA
fake.mac_address() # MAC地址
fake.safe_email() # 安全邮箱
fake.free_email() # 免费邮箱
fake.company_email()  # 公司邮箱
fake.email() # 邮箱

运行结果:

'203.0.111.20'
'86af:27b7:ddf2:e703:151d:234:d9f4:9c39'
'explore/explore/posts'
'.html'
'http://www.morris-friedman.org/category.htm'
'http://nicholson-terry.info/'
'https://www.lorempixel.com/933/425'
'anderson-monroe'
'clark.com'
'com'
'debra45'
'Mozilla/5.0 (Windows; U; Windows NT 6.0) AppleWebKit/531.29.3 (KHTML, like Gecko) Version/4.1 Safari/531.29.3'
'42:ee:2c:9e:4a:ea'
'[email protected]'
'[email protected]'
'[email protected]'
'[email protected]'
11.Work

随机生成一个职业,用法如下:

fake.job()
#'Scientist, physiological'
12.phone-number

手机号及运营商的信息,用法如下:

fake.msisdn()
fake.phone_number() # 手机号

运行结果如下:

'7373137625401'
'(977)473-0878'
13.Person

1.用于生成和人名相关的数据,包括姓氏、名字、全名、英文名等内容,还能区分男女名字,用法如下:

fake.suffix_female()#女性
fake.last_name() # 姓
fake.suffix_male()
fake.first_name_male() # 男性名
fake.name() # 姓名
fake.first_name() # 名
fake.last_name_male() # 男性姓
fake.name_male() # 女性姓名
fake.suffix()
fake.first_name_female()
fake.last_name_female()
fake.prefix_male()
fake.name_female()
fake.prefix_female()
fake.prefix()

运行结果如下:

'DVM'
'Becker'
'Jr.'
'Danny'
'Kenneth Lane'
'Michelle'
'Jimenez'
'Jose James'
'DVM'
'Shelby'
'Wade'
'Mr.'
'Amanda Smith'
'Mrs.'
'Mrs.'

2.个人信息,用法如下:

fake = Faker("zh_CN")
fake.profile(fields=None, sex=None)
fake.simple_profile(sex=None)

运行结果如下:

{'job': '房地产销售',
 'company': '良诺信息有限公司',
 'ssn': '451001193101245029',
 'residence': '内蒙古自治区冬梅县高坪夏街I座 548128',
 'current_location': (Decimal('49.180192'), Decimal('141.206340')),
 'blood_group': 'O-',
 'website': ['https://www.dongtian.net/'],
 'username': 'xwen',
 'name': '徐玉华',
 'sex': 'M',
 'address': '福建省辉市龙潭乌鲁木齐路S座 374568',
 'mail': '[email protected]',
 'birthdate': datetime.date(1974, 11, 24)}
{'username': 'ama',
 'name': '周亮',
 'sex': 'M',
 'address': '新疆维吾尔自治区建平市大东拉萨路s座 128751',
 'mail': '[email protected]',
 'birthdate': datetime.date(1977, 11, 18)}
14.Lorem

用于生成一些假文字数据,包括句子、自然段、长文本、关键词等,另外可以传入不同的参数来控制生成的长度,用法如下:

faker.paragraph(nb_sentences=3, variable_nb_sentences=True, ext_word_list=None)
faker.paragraphs(nb=3, ext_word_list=None)
faker.sentence(nb_words=6, variable_nb_words=True, ext_word_list=None)
faker.sentences(nb=3, ext_word_list=None)
faker.text(max_nb_chars=200, ext_word_list=None)
faker.texts(nb_texts=3, max_nb_chars=200, ext_word_list=None)
faker.word(ext_word_list=None)
faker.words(nb=3, ext_word_list=None, unique=False)

运行结果如下:

'威望进行情况同时公司希望.联系科技不能当然操作社会.'
['销售参加当然情况为了你们这么.首页具有网站上海处理程序.',
 '只要以后一种软件北京方面以上.品牌注意可以关系出现电影.',
 '当前图片最新设计管理.也是最后只要这些责任.']
'所有介绍只是这些.'
['研究开发欢迎图片你们根据大家发布.', '如何电话我的一切发展.', '看到我的汽车.']
'环境商品起来管理.评论一般质量一次大家报告注意.\n其中位置表示重要.一个电话如何地方一下无法起来.\n等级能力方面一些参加还有.完全出来这么会员所有解决.一些虽然规定.\n日期精华环境怎么只要新闻详细.环境的人发表人员.责任当前法律根据类别信息中心.\n表示所以学生人员上海.规定这些虽然汽车产品自己他们当前.\n商品是一一定问题帖子不断一定由于.希望能够她的产品地址.名称发生地址进入发现.'
['开发进入为了帖子有限.什么来自最后你们不过工具注意.\n社会由于软件程序工程还有.认为而且专业客户准备你的.\n一起你们使用社区之后很多的是提高.欢迎社区加入工作首页控制密码.\n不断现在因为处理类型有限.单位其实品牌地址制作准备.\n方法情况通过看到之间深圳.完全精华一次能力手机组织在线.下载其实文章生产.\n文化这是方面网上.\n那么公司影响网络男人直接那个也是.日本新闻处理这是这是.',
 '使用喜欢一次公司文化同时虽然.留言教育来自这么.发展最大所以资料加入参加如果.\n结果操作今年次数法律.作为标题注册结果出现在线.\n可是部分来源方法制作日期发布.制作一定活动作为.就是说明点击标准深圳.\n分析个人起来同时.免费一切安全直接一直如此的话.表示主要一切开发解决部门简介.更多重要日期朋友规定作者无法.\n感觉威望简介电影能力日期的话.等级法律名称教育.',
 '只是东西有限应该可能价格.\n企业以及制作语言这种不断虽然.到了法律提供广告应该社区.\n部门查看软件地址方面游戏进入.积分作品包括建设开发之后因为.\n继续以上经济到了发展起来可能.包括非常运行简介更多重要通过.\n直接决定系列数据积分.地方使用当前软件还是精华信息.\n使用登录能力还有回复历史.单位事情组织一些商品还是以后.可以提高谢谢.']
'网络'
['具有', '城市', '工程']

在这里每个方法的参数是不同的,具体的参数解释可以见源代码每个方法的注释:https://github.com/joke2k/faker/blob/master/faker/providers/lorem/init.py。

15.User-Agent

用于生成和浏览器 User-Agent 相关的内容,可以定制各种浏览器,还可以传入版本信息来控制生成的内容,用法如下:

faker.chrome(version_from=13, version_to=63, build_from=800, build_to=899)
faker.firefox()
faker.internet_explorer()
faker.linux_platform_token()
faker.linux_processor()
faker.mac_platform_token()
faker.mac_processor()
faker.opera()
faker.safari()
faker.user_agent()#常用这个
faker.windows_platform_token()

运行结果如下:

'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_12_7) AppleWebKit/534.0 (KHTML, like Gecko) Chrome/27.0.847.0 Safari/534.0'
'Mozilla/5.0 (X11; Linux x86_64; rv:1.9.6.20) Gecko/2014-11-26 04:43:55 Firefox/3.6.19'
'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 4.0; Trident/4.1)'
'X11; Linux i686'
'i686'
'Macintosh; U; PPC Mac OS X 10_10_4'
'U; Intel'
'Opera/9.52.(Windows NT 6.0; mt-MT) Presto/2.9.174 Version/11.00'
'Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_7_9 rv:5.0; te-IN) AppleWebKit/531.17.7 (KHTML, like Gecko) Version/4.1 Safari/531.17.7'
'Mozilla/5.0 (Windows; U; Windows CE) AppleWebKit/533.3.2 (KHTML, like Gecko) Version/4.0.2 Safari/533.3.2'
'Windows 98'

在这里我们提到一个生成User-Agent ,我们还可以去看一下fake_useragent,这个是一个别人开源第三方库,它相当是从一个文件中随机读取一个,相对这个功能小很多,我们可以看一下:

from fake_useragent import UserAgent
ua =UserAgent()  
random_agent =ua.random
headers ={"User-Agent":random_agent}
headers

运行结果如下:

{'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36'}

所以我们以后再弄user-agent也可以考虑这些。
我这篇博客只是列举了少量造假数据的方法和用法,大家有兴趣的可以去Faker官网上看看,另外这个第三方库也是在一直补充的,还有一些社区贡献的 Provider,如 WiFi、微服务相关的,大家可以查看文档的说明,另外需要额外安装这些扩展包并自行添加 Provider,添加 Provider 需要调用 add_provider 方法,用法示例如下:下面我举个例子:

from faker import Faker
from faker.providers import internet
faker = Faker()
faker.add_provider(internet)
print(faker.ipv4_private())#ip地址

运行结果如下:

10.154.190.22

这篇博客也大致介绍到这里了,有兴趣的或者想了解更多的,可以去网上多查阅一下,一些方法第参数可以去看看这个库的源代码。

猜你喜欢

转载自blog.csdn.net/qq_42370313/article/details/101100411
今日推荐