溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python學(xué)習(xí)教程:不再造假數(shù)據(jù)了,可以來試試Faker這個庫

發(fā)布時間:2020-08-08 22:01:14 來源:ITPUB博客 閱讀:189 作者:千鋒Python唐小強(qiáng) 欄目:編程語言

今天分享這篇 Python學(xué)習(xí)教程 絕對是干貨,F(xiàn)aker這個庫的強(qiáng)大,由你說了算!

在做程序開發(fā)的時候,我們經(jīng)常會用到一些測試數(shù)據(jù),相信大多數(shù)同學(xué)是這么來造測試數(shù)據(jù)的:

test1
test01
test02
測試1
測試2
測試數(shù)據(jù)1
這是一段測試文本
這是一段很長很長很長的測試文本...

中槍的請舉手。

不僅要自己手動敲這些測試數(shù)據(jù),還敲的這么假。那有啥辦法呢?難不成有什么東西能自動給我造點以假亂真的數(shù)據(jù)啊?你別說,還真有!

Python學(xué)習(xí)教程:不再造假數(shù)據(jù)了,可以來試試Faker這個庫

在 Python 中有個神庫,叫做 Faker,它可以自動幫我們來生成各種各樣的看起來很真的”假“數(shù)據(jù),讓我們來看看吧!

安裝

首先讓我們來看看這個庫的安裝方法,實際上裝起來非常簡單,使用 pip 安裝即可,Python3 版本的安裝命令如下:

pip3 install faker


安裝好了之后,我們使用最簡單的例子來生成幾個假數(shù)據(jù)試試:

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

首先我們從 faker 這個包里面導(dǎo)入一個 Faker 類,然后將其實例化為 faker 對象,依次調(diào)用它的 name、address、text 方法,看下運行效果:

name: Nicholas Wilson
address: 70561 Simmons Road Apt. 893
Lake Raymondville, HI 35240
text: Both begin bring federal space.
Official start idea specific. Able under young fire.
Who show line traditional easy people. Until economic lead event case. Technology college his director style.

看到這里給我們生成了看起來很真的英文姓名、地址、長文本。

但我們是中國人,我們肯定想要生成中文的吧,不用擔(dān)心,這個庫對非常多的語言都有支持,當(dāng)然也包括中文了,具體的支持的語言列表可以見:https://faker.readthedocs.io/en/master/locales.html。

這里幾個比較常見的語言代號列一下:

  • 簡體中文:zh_CN
  • 繁體中文:zh_TW
  • 美國英文:en_US
  • 英國英文:en_GB
  • 德文:de_DE
  • 日文:ja_JP
  • 韓文:ko_KR
  • 法文:fr_FR

那么如果要生成中文,只需要在 Faker 類的第一個參數(shù)傳入對應(yīng)的語言代號即可,例如簡體中文就傳入 zh_CN,所以上面的代碼改寫如下:

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

運行結(jié)果如下:

name: 何琳
address: 寧夏回族自治區(qū)六盤水縣南溪北鎮(zhèn)街f座 912311
text: 經(jīng)營軟件積分開始次數(shù)專業(yè).美國留言一種管理人民解決兩個.支持只有地方一切.
文化目前東西的是不過所以.系統(tǒng)覺得這種為什一下他們.時候以及這樣繼續(xù)是一狀態(tài)威望.
網(wǎng)站密碼情況.問題一點那個還是.其實過程詳細(xì).
中國歷史環(huán)境電話規(guī)定.經(jīng)驗上??刂撇灰?朋友運行項目我們.
以后今天那些使用免費國家加入但是.內(nèi)容簡介空間次數(shù)最大一個.日期通過得到日本北京.

可以看到一段中文的姓名、地址、長文本便生成了??雌饋淼刂肥鞘》荨⒌丶壥?、縣級市、街道是隨機(jī)組合的,文本也是一些隨機(jī)的詞組合而成的,但其實這樣已經(jīng)比文章一開頭列的測試數(shù)據(jù)強(qiáng)太多了。

上面的代碼每次運行得到的結(jié)果都是不同的,因為生成的結(jié)果都是隨機(jī)組合而成的。

Provider

接下來讓我們詳細(xì)看下 faker 可以都生成什么類型的數(shù)據(jù),具體的可用 API 可以看 https://faker.readthedocs.io/en/master/locales/zh_CN.html,這里面列出來了可用的所有方法。

但打開之后可以發(fā)現(xiàn),這里面多了一個 Provider 對象,那么這個 Provider 是怎么一回事呢?

實際上這個 faker 庫在設(shè)計上,為了解耦,將 Provider 對象做成了 Faker 對象的”插件“。Faker 可以添加一個個 Provider 對象,Provider 對象為 Faker 對象提供了生成某項數(shù)據(jù)的核心實現(xiàn)。就相當(dāng)于 Faker 對象是一個生成器,它的生成功能依賴于什么呢?依賴于 Provider,是 Provider 提供給了 Faker 對象生成某項數(shù)據(jù)的能力。

正是因為 Faker 對象內(nèi)置了一些 Provider 對象,F(xiàn)aker 對象才可以生成剛才所要求的姓名、地址和文本。

那么這時候我們肯定就很好奇了,既然 Faker 對象有生成數(shù)據(jù)的能力,那么它一定內(nèi)置了一些默認(rèn)的 Provider 對象,下面我們來打印看一下:

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

運行結(jié)果如下:

[<faker.providers.user_agent.Provider object at 0x10249de48>, <faker.providers.ssn.zh_CN.Provider object at 0x10249dc18>, <faker.providers.python.Provider object at 0x10249dd68>, <faker.providers.profile.Provider object at 0x10249dcc0>, <faker.providers.phone_number.zh_CN.Provider object at 0x10249dc88>, <faker.providers.person.zh_CN.Provider object at 0x10249de80>, <faker.providers.misc.Provider object at 0x10249df60>, <faker.providers.lorem.zh_CN.Provider object at 0x10249dc50>, <faker.providers.job.zh_CN.Provider object at 0x10249de10>, <faker.providers.isbn.Provider object at 0x10249c6d8>, <faker.providers.internet.zh_CN.Provider object at 0x10249c828>, <faker.providers.geo.en_US.Provider object at 0x102484748>, <faker.providers.file.Provider object at 0x102484828>, <faker.providers.date_time.en_US.Provider object at 0x1023789e8>, <faker.providers.currency.Provider object at 0x102484780>, <faker.providers.credit_card.Provider object at 0x1024845f8>, <faker.providers.company.zh_CN.Provider object at 0x102499ef0>, <faker.providers.color.en_US.Provider object at 0x1023532e8>, <faker.providers.barcode.Provider object at 0x101cb6d30>, <faker.providers.bank.en_GB.Provider object at 0x102378f98>, <faker.providers.automotive.en_US.Provider object at 0x1017a5c50>, <faker.providers.address.zh_CN.Provider object at 0x101787c18>]


還真不少,通過名字可以看到有 user_agent、phone_number、isbn、credit_card 等 Provider,其中具有語言差異化的 Provider 還單獨區(qū)分了語言,比如 phone_number 代表電話號碼,這個不同語言的不同,所以這里就又分了一層 zh_CN,作了語言的區(qū)分。

這樣一來,通用的 Provider 就直接處在某個 Provider 類別的模塊中,具有語言差異的 Provider 就又根據(jù)不同的語言進(jìn)一步劃分了模塊,設(shè)計上非??茖W(xué),易擴(kuò)展又不冗余。

知道了 Faker 具有這么多 Provider 之后,我們來看看剛才調(diào)用的 name、address 等方法又和 Provider 有什么關(guān)系呢?

我們將 name、address、text 等方法打印一下看看:

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

注意這里沒有調(diào)用,而是直接打印了這三個方法,這樣可以直接輸出方法的對象形式的描述,結(jié)果如下:

name: <bound method Provider.name of <faker.providers.person.zh_CN.Provider object at 0x10f6dea58>>
address: <bound method Provider.address of <faker.providers.address.zh_CN.Provider object at 0x10e9e6cf8>>
text: <bound method Provider.text of <faker.providers.lorem.zh_CN.Provider object at 0x10f6dfda0>>

恍然大悟,原來我們調(diào)用的方法就是 Faker 對象調(diào)用的 Provider 里面的對應(yīng)方法,比如 name 就是 faker.providers.person.zh_CN.Provider 里面的 name 方法,二者是一致的,我們扒一扒源碼驗證下,源碼在:https://github.com/joke2k/faker/blob/master/faker/providers/person/init.py,果不其然,里面定義了 name 方法,然后 Faker 動態(tài)地將這個方法引入進(jìn)來了,就可以使用了。

方法列舉

既然有這么多 Provider,下面我們再詳細(xì)地看看還有哪些常用的方法吧,下面進(jìn)行一部分簡單的梳理,參考來源文檔地址為:

https://faker.readthedocs.io/en/master/providers.html。

Address

Address,用于生成一些和地址相關(guān)的數(shù)據(jù),如地址、城市、郵政編碼、街道等內(nèi)容, 用法如下:

faker.address()
# '新疆維吾爾自治區(qū)杰縣南湖武漢街D座 253105'
faker.building_number()
# 'B座'
faker.city()
# '璐縣'
faker.city_name()
# '貴陽'
faker.city_suffix()
# '縣'
faker.country()
# '阿拉斯加'
faker.country_code(representation="alpha-2")
# 'CR'
faker.district()
# '西峰'
faker.postcode()
# '726749'
faker.province()
# '福建省'
faker.street_address()
# '余路N座'
faker.street_name()
# '李路'
faker.street_suffix()
# '路'

Color

Color,用于生成和顏色相關(guān)的數(shù)據(jù),如 HEX、RGB、RGBA 等格式的顏色,用法如下:

faker.color_name()
# 'DarkKhaki'
faker.hex_color()
# '#97d14e'
faker.rgb_color()
# '107,179,51'
faker.rgb_css_color()
# 'rgb(20,46,70)'
faker.safe_color_name()
# 'navy'
faker.safe_hex_color()
# '#dd2200'

Company

Company,用于生成公司相關(guān)數(shù)據(jù),如公司名、公司前綴、公司后綴等內(nèi)容,用法如下:

faker.bs()
# 'grow rich initiatives'
faker.catch_phrase()
# 'Self-enabling encompassing function'
faker.company()
# '恒聰百匯網(wǎng)絡(luò)有限公司'
faker.company_prefix()
# '暉來計算機(jī)'
faker.company_suffix()
# '信息有限公司'

Credit Card

Credit Card,用于生成信用卡相關(guān)數(shù)據(jù),如過期時間、銀行卡號、安全碼等內(nèi)容,用法如下:

faker.credit_card_expire(start="now", end="+10y", date_format="%m/%y")
# '08/20'
faker.credit_card_full(card_type=None)
# 'Mastercard\n玉蘭 范\n5183689713096897 01/25\nCVV: 012\n'
faker.credit_card_number(card_type=None)
# '4009911097184929918'
faker.credit_card_provider(card_type=None)
# 'JCB 15 digit'
faker.credit_card_security_code(card_type=None)
# '259'

Date Time

Date Time,用于生成時間相關(guān)數(shù)據(jù),如年份、月份、星期、出生日期等內(nèi)容,可以返回 datetime 類型的數(shù)據(jù),用法如下:

faker.am_pm()
# 'AM'
faker.century()
# 'X'
faker.date(pattern="%Y-%m-%d", end_datetime=None)
# '1997-06-16'
faker.date_between(start_date="-30y", end_date="today")
# datetime.date(2000, 8, 30)
faker.date_between_dates(date_start=None, date_end=None)
# datetime.date(2019, 7, 30)
faker.date_object(end_datetime=None)
# datetime.date(1978, 3, 12)
faker.date_of_birth(tzinfo=None, minimum_age=0, maximum_age=115)
# datetime.date(2012, 6, 3)
faker.date_this_century(before_today=True, after_today=False)
# datetime.date(2011, 6, 12)
faker.date_this_decade(before_today=True, after_today=False)
# datetime.date(2011, 8, 22)
faker.date_this_month(before_today=True, after_today=False)
# datetime.date(2019, 7, 25)
faker.date_this_year(before_today=True, after_today=False)
# datetime.date(2019, 7, 22)
faker.date_time(tzinfo=None, end_datetime=None)
# datetime.datetime(2018, 8, 11, 22, 3, 34)
faker.date_time_ad(tzinfo=None, end_datetime=None, start_datetime=None)
# datetime.datetime(1566, 8, 26, 16, 25, 30)
faker.date_time_between(start_date="-30y", end_date="now", tzinfo=None)
# datetime.datetime(2015, 1, 31, 4, 14, 10)
faker.date_time_between_dates(datetime_start=None, datetime_end=None, tzinfo=None)
# datetime.datetime(2019, 7, 30, 17, 51, 44)
faker.date_time_this_century(before_now=True, after_now=False, tzinfo=None)
# datetime.datetime(2002, 9, 25, 23, 59, 49)
faker.date_time_this_decade(before_now=True, after_now=False, tzinfo=None)
# datetime.datetime(2010, 5, 25, 20, 20, 52)
faker.date_time_this_month(before_now=True, after_now=False, tzinfo=None)
# datetime.datetime(2019, 7, 19, 18, 4, 6)
faker.date_time_this_year(before_now=True, after_now=False, tzinfo=None)
# datetime.datetime(2019, 3, 15, 11, 4, 18)
faker.day_of_month()
# '04'
faker.day_of_week()
# 'Monday'
faker.future_date(end_date="+30d", tzinfo=None)
# datetime.date(2019, 8, 12)
faker.future_datetime(end_date="+30d", tzinfo=None)
# datetime.datetime(2019, 8, 24, 2, 59, 4)
faker.iso8601(tzinfo=None, end_datetime=None)
# '1987-07-01T18:33:56'
faker.month()
# '11'
faker.month_name()
# 'August'
faker.past_date(start_date="-30d", tzinfo=None)
# datetime.date(2019, 7, 25)
faker.past_datetime(start_date="-30d", tzinfo=None)
# datetime.datetime(2019, 7, 18, 22, 46, 51)
faker.time(pattern="%H:%M:%S", end_datetime=None)
# '16:22:30'
faker.time_delta(end_datetime=None)
# datetime.timedelta(0)
faker.time_object(end_datetime=None)
# datetime.time(22, 12, 15)
faker.time_series(start_date="-30d", end_date="now", precision=None, distrib=None, tzinfo=None)
# <generator object Provider.time_series at 0x7fcbce0604f8>
faker.timezone()
# 'Indian/Comoro'
faker.unix_time(end_datetime=None, start_datetime=None)
# 1182857626
faker.year()
# '1970'

File

File,用于生成文件和文件路徑相關(guān)的數(shù)據(jù),包括文件擴(kuò)展名、文件路徑、MIME_TYPE、磁盤分區(qū)等內(nèi)容,用法如下:

faker.file_extension(category=None)
# 'flac'
faker.file_name(category=None, extension=None)
# '然后.numbers'
faker.file_path(depth=1, category=None, extension=None)
# '/關(guān)系/科技.mov'
faker.mime_type(category=None)
# 'video/ogg'
faker.unix_device(prefix=None)
# '/dev/sdd'
faker.unix_partition(prefix=None)
# '/dev/xvds3'

Geo

Geo,用于生成和地理位置相關(guān)的數(shù)據(jù),包括經(jīng)緯度,時區(qū)等等信息,用法如下:

faker.coordinate(center=None, radius=0.001)
# Decimal('-114.420686')
faker.latitude()
# Decimal('-9.772541')
faker.latlng()
# (Decimal('-27.0730915'), Decimal('-5.919460'))
faker.local_latlng(country_code="US", coords_only=False)
# ('41.47892', '-87.45476', 'Schererville', 'US', 'America/Chicago')
faker.location_on_land(coords_only=False)
# ('12.74482', '4.52514', 'Argungu', 'NG', 'Africa/Lagos')
faker.longitude()
# Decimal('40.885895')

Internet

Internet,用于生成和互聯(lián)網(wǎng)相關(guān)的數(shù)據(jù),包括隨機(jī)電子郵箱、域名、IP 地址、URL、用戶名、后綴名等內(nèi)容,用法如下:

faker.ascii_company_email(*args, **kwargs)
# 'xuna@xiaqian.cn'
faker.ascii_email(*args, **kwargs)
# 'min59@60.cn'
faker.ascii_free_email(*args, **kwargs)
# 'min75@gmail.com'
faker.ascii_safe_email(*args, **kwargs)
# 'cliu@example.com'
faker.company_email(*args, **kwargs)
# 'ilong@99.cn'
faker.domain_name(levels=1)
# 'xiulan.cn'
faker.domain_word(*args, **kwargs)
# 'luo'
faker.email(*args, **kwargs)
# 'maoxiulan@hotmail.com'
faker.free_email(*args, **kwargs)
# 'yanshen@gmail.com'
faker.free_email_domain(*args, **kwargs)
# 'yahoo.com'
faker.hostname(*args, **kwargs)
# 'lt-18.pan.cn'
faker.image_url(width=None, height=None)
# 'https://placekitten.com/51/201'
faker.ipv4(network=False, address_class=None, private=None)
# '192.233.68.5'
faker.ipv4_network_class()
# 'a'
faker.ipv4_private(network=False, address_class=None)
# '10.9.97.93'
faker.ipv4_public(network=False, address_class=None)
# '192.51.22.7'
faker.ipv6(network=False)
# 'de57:9c6f:a38c:9864:10ec:6442:775d:5f02'
faker.mac_address()
# '99:80:5c:ab:8c:a9'
faker.safe_email(*args, **kwargs)
# 'tangjuan@example.net'
faker.slug(*args, **kwargs)
# ''
faker.tld()
# 'cn'
faker.uri()
# 'http://fangfan.org/app/tag/post/'
faker.uri_extension()
# '.php'
faker.uri_page()
# 'about'
faker.uri_path(deep=None)
# 'app'
faker.url(schemes=None)
# 'http://mingli.cn/'
faker.user_name(*args, **kwargs)
# 'jie54'

Job

Job,用于生成和職業(yè)相關(guān)的數(shù)據(jù),用法如下:

faker.job()
# '燙工'

Lorem

Lorem,用于生成一些假文字?jǐn)?shù)據(jù),包括句子、自然段、長文本、關(guān)鍵詞等,另外可以傳入不同的參數(shù)來控制生成的長度,用法如下:

faker.paragraph(nb_sentences=3, variable_nb_sentences=True, ext_word_list=None)
# '包括的是報告那些一點.圖片地址基本全部.'
faker.paragraphs(nb=3, ext_word_list=None)
# [ '計劃規(guī)定這樣所以組織商品其中.參加成為不同發(fā)表地區(qū).精華科技謝謝大家需要.一下手機(jī)上海中文工程.',
# '非常相關(guān)是一就是一個一種文章發(fā)生.增加那些以及之后以下你的.',
# '學(xué)生應(yīng)該出來分析增加關(guān)系組織.評論來源朋友注冊應(yīng)該需要單位.感覺最后無法發(fā)現(xiàn)選擇人民.']
faker.sentence(nb_words=6, variable_nb_words=True, ext_word_list=None)
# '介紹結(jié)果自己解決處理.'
faker.sentences(nb=3, ext_word_list=None)
# ['查看其實一次學(xué)習(xí)登錄瀏覽是一他們.', '而且資源的人事情.', '科技價格免費大學(xué)教育.']
faker.text(max_nb_chars=200, ext_word_list=None)
# ('只是當(dāng)前國內(nèi)中文所以.威望系統(tǒng)在線雖然.\n'
# '圖片人民非常合作這種謝謝更新.名稱詳細(xì)直接社會一直首頁完全.\n'
# '重要更多只要市場.必須只是學(xué)生音樂.系統(tǒng)美國類別這些一切環(huán)境.\n'
# '但是的話人民美國關(guān)于.\n'
# '情況專業(yè)國際看到研究.音樂環(huán)境市場搜索發(fā)現(xiàn).\n'
# '工具還是到了今天位置人民.留言作者品牌工程項目必須.上海精華現(xiàn)在我們新聞應(yīng)該關(guān)系.\n'
# '更新經(jīng)濟(jì)能力全部資源如果.手機(jī)能夠登錄國內(nèi).')
faker.texts(nb_texts=3, max_nb_chars=200, ext_word_list=None)
# [ '成功可能推薦你的行業(yè).地區(qū)而且推薦.\n'
# '網(wǎng)絡(luò)不斷是一主要必須.開始安全服務(wù).\n'
# '應(yīng)該網(wǎng)上通過以后通過大學(xué).管理要求有關(guān)國際閱讀當(dāng)前.為了應(yīng)該結(jié)果點擊公司開始怎么.\n'
# '成功一次最大生產(chǎn)網(wǎng)站.這種加入她的地址有限.\n'
# '根據(jù)新聞汽車起來非常主題顯示必須.有些建設(shè)來自作者電話支持.\n'
# '只是資源還是由于經(jīng)濟(jì)事情喜歡.為什中文大小得到服務(wù).網(wǎng)絡(luò)密碼是否免費參加一次社區(qū)歡迎.',
# '部門活動技術(shù).商品影響發(fā)生行業(yè)密碼完成.就是部門結(jié)果資料學(xué)習(xí)當(dāng)然.或者幫助城市要求首頁市場教育你們.\n'
# '專業(yè)完全分析處理城市大學(xué)什么.\n'
# '文件非常國際全部起來積分公司.資料的是電影沒有.這是本站需要.\n'
# '合作重要沒有現(xiàn)在市場開發(fā)空間.您的會員推薦成功教育進(jìn)行中國.\n'
# '文件不是如果評論.因為經(jīng)驗設(shè)備規(guī)定.\n'
# '加入一起影響網(wǎng)上大家運行在線如果.工程企業(yè)這種以后.',
# '空間市場出現(xiàn)必須基本電話.顯示一個標(biāo)準(zhǔn)其他設(shè)計作品.工程不斷新聞問題更多更新這么.\n'
# '一起簡介網(wǎng)上內(nèi)容不會.任何知道各種兩個.類別事情經(jīng)營那么投資市場.\n'
# '那些使用介紹公司朋友人民你們?yōu)g覽.應(yīng)該表示一點一般說明主要謝謝.電話回復(fù)起來經(jīng)驗一個來源加入.\n'
# '地區(qū)法律其他表示雖然.參加社會喜歡有限論壇一般發(fā)布.類別目前文化可以.\n'
# '報告質(zhì)量工作主要.企業(yè)發(fā)布完全.得到名稱作者等級兩個論壇只要電話.']
faker.word(ext_word_list=None)
# '注意'
faker.words(nb=3, ext_word_list=None, unique=False)
# ['責(zé)任', '組織', '以后']
在這里每個方法的參數(shù)是不同的,具體的參數(shù)解釋可以見源代碼每個方法的注釋:https://github.com/joke2k/faker/blob/master/faker/providers/lorem/__init__.py,

Misc

Misc,用于生成生成一些混淆數(shù)據(jù),比如密碼、sha1、sha256、md5 等加密后的內(nèi)容,用法如下:

faker.boolean(chance_of_getting_true=50)
# True
faker.md5(raw_output=False)
# '3166fa26ffd3f2a33e020dfe11191ac6'
faker.null_boolean()
# False
faker.password(length=10, special_chars=True, digits=True, upper_case=True, lower_case=True)
# 'W7Ln8La@%O'
faker.sha1(raw_output=False)
# 'c8301a2a79445439ee5287f38053e4b3a05eac79'
faker.sha256(raw_output=False)
# '1e909d331e20cf241aaa2da894deae5a3a75e5cdc35c053422d9b8e7ccfa0402'
faker.uuid4(cast_to=<class 'str'>)
# '6e6fe387-6877-48d9-94ea-4263c4c71aa5'

Person

Person,用于生成和人名相關(guān)的數(shù)據(jù),包括姓氏、名字、全名、英文名等內(nèi)容,還能區(qū)分男女名字,用法如下:

faker.first_name()
# '穎'
faker.first_name_female()
# '芳'
faker.first_name_male()
# '利'
faker.first_romanized_name()
# 'Jing'
faker.last_name()
# '溫'
faker.last_name_female()
# '寇'
faker.last_name_male()
# '陳'
faker.last_romanized_name()
# 'Lei'
faker.name()
# '黃明'
faker.name_female()
# '張凱'
faker.name_male()
# '黃鵬'

User-Agent

User-Agent,用于生成和瀏覽器 User-Agent 相關(guān)的內(nèi)容,可以定制各種瀏覽器,還可以傳入版本信息來控制生成的內(nèi)容,用法如下:

faker.chrome(version_from=13, version_to=63, build_from=800, build_to=899)
# ('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/5332 (KHTML, like Gecko) '
# 'Chrome/40.0.837.0 Safari/5332')
faker.firefox()
# ('Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_8_9; rv:1.9.4.20) '
# 'Gecko/2019-05-02 05:58:44 Firefox/3.6.19')
faker.internet_explorer()
# 'Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/3.0)'
faker.linux_platform_token()
# 'X11; Linux i686'
faker.linux_processor()
# 'x86_64'
faker.mac_platform_token()
# 'Macintosh; U; PPC Mac OS X 10_12_5'
faker.mac_processor()
# 'U; Intel'
faker.opera()
# 'Opera/9.77.(Windows NT 4.0; vi-VN) Presto/2.9.182 Version/11.00'
faker.safari()
# ('Mozilla/5.0 (Macintosh; PPC Mac OS X 10_7_1 rv:5.0; or-IN) '
# 'AppleWebKit/535.9.4 (KHTML, like Gecko) Version/5.0.2 Safari/535.9.4')
faker.user_agent()
# 'Opera/8.69.(X11; Linux i686; ml-IN) Presto/2.9.170 Version/11.00'
faker.windows_platform_token()
# 'Windows NT 6.1'

其他 Provider

另外還有一些社區(qū)貢獻(xiàn)的 Provider,如 WiFi、微服務(wù)相關(guān)的,大家可以查看文檔的說明,另外需要額外安裝這些擴(kuò)展包并自行添加 Provider。

添加 Provider 需要調(diào)用 add_provider 方法,用法示例如下:

from faker import Faker
from faker.providers import internet
faker = Faker()
faker.add_provider(internet)
print(faker.ipv4_private())


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI