1. 程式人生 > >Python 批量生成中文姓名(百家姓)

Python 批量生成中文姓名(百家姓)

遍歷 [] enc image 只需要 BE 數據 標簽 append

  最近需要造一部分數據,需要用到人名,與其用腳本生成一些隨機組合的漢字,不如在網上爬一些看似真實的姓名,所以找來了姓氏大全的網站,網址:http://www.resgain.net/xsdq.html

技術分享圖片

上圖可以看到有很多不同的姓氏,每個姓氏(又是一個網頁)裏邊有很多名字,這樣輕輕松松就可以搞定一些真實的數據了,

技術分享圖片

此時只需要獲取名字即可。

  用到的庫有urllib2 bs4,首先就是用urllib2獲取請求,然後用beautifulsoup將請求內容生成可分析對象,然後查找標簽即可,很簡單,上代碼好了。

# -*- coding: utf-8 -*-

import urllib2
import sys
from bs4 import BeautifulSoup
reload(sys)
sys.setdefaultencoding("utf-8")

def get_name(url):
name_list = []
request = urllib2.Request(url) # 創建對名字大全網站get請求
result = urllib2.urlopen(request) # 發出請求
soup = BeautifulSoup(result.read(), ‘html.parser‘) # 生成可分析對象
if soup.find_all("a",class_="btn btn2"):
for name in soup.find_all("a",class_="btn btn2")[:15]: # 遍歷所有的姓氏鏈接,此處只獲取前15個姓氏
url = ‘http:‘ + name.attrs[‘href‘] #找到姓氏鏈接,再次返回此函數
get_name(url)
elif soup.find_all(‘a‘,class_=‘btn btn-link‘):
for name in soup.find_all(‘a‘,class_=‘btn btn-link‘)[:10]: #找到不同姓氏的名字,此處只獲取每個姓氏的前10個
name_list.append(name.text)
# print name.text

return name_list



if __name__ == ‘__main__‘:
url = "http://www.resgain.net/xsdq.html"
get_name(url)

Python 批量生成中文姓名(百家姓)