前言
孩子出生了,懶得給孩子想名字,為了解決取名字難這個麻煩事,故寫了個python腳本替自己完成。
原理
- 獲得孩子出生的時間(生辰八字)
- 去算各大排盤軟件上算下生辰八字屬性,分析一下喜用神
- 知道了喜用神之后,便去尋找五行對應(yīng)的字,可以百度五行字典
- 使用腳本,更改名字的數(shù)組,替換成自己喜用神的屬性字,這里我的喜用神是木合水,就找來了相關(guān)的字
# 這是一個示例 Python 腳本。
import time
# 按 Shift+F10 執(zhí)行或?qū)⑵涮鎿Q為您的代碼。
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
from selenium.webdriver.support.wait import WebDriverWait
# 獲取文本文件
def getTextFile():
textFile = open('output.txt', 'w')
return textFile
# 寫入文件
def writeText(textFile, name, desc):
# 寫入字符到文件中
textFile.write(name + '\n')
textFile.write(desc + '\n\r')
# 獲取字列表
def getName():
# 五行屬木的字
mu = ["筱", "梵", "橙", "梓", "元", "本", "榮", "柯", "可", "關(guān)", "菲", "木", "樹", "林", "枝", "柵", "桓", "森",
"彬", "杉", "權(quán)", "柱", "棟", "松", "柏", "萌", "藍(lán)", "芙", "欣", "毅", "相", "科", "茂", "賢", "棕", "卷",
"谷", "君", "古", "原", "廉", "建", "慶", "樺", "統(tǒng)", "若", "攀", "棟", "荒", "何", "久", "俠", "奇", "樸",
"鴿", "東", "嘉", "冠", "嘯", "祺", "琪", "雁", "宜", "琦", "枝", "堅(jiān)", "昂", "毅", "歌", "標(biāo)", "固", "吉",
"高", "康", "堯", "果", "杭", "語", "曲", "肖", "荷", "芹", "乾", "義", "杰", "皓", "凱", "狂", "勤", "彬",
"景", "月", "兼", "頃", "柏", "擎", "榮", "觀", "篤", "恭", "柯", "言", "菲", "蕭", "喬", "群", "謙", "國",
"極", "輕", "玉", "業(yè)", "材", "相", "苑", "倚", "岳", "柳", "貴", "悟", "健", "彥", "棋", "楷", "桐", "氣",
"顏", "苛"]
# 五行屬水的字
shui = ["云", "澤", "淵", "鴻", "滿", "瀾", "澄", "斐", "源", "默", "平", "凡", "淇", "淋", "淐", "淑", "淘", "淙",
"淞", "淡", "淬", "淮", "深", "淳", "添", "漣", "渙", "滌", "潤", "澗", "涪", "涯", "涴", "涵", "淀", "淄",
"淅", "浦", "浩", "浪", "浮", "浴", "海", "涂", "涌", "涓", "涔", "濤", "池", "聞", "流", "霜", "福", "泉",
"宏", "弘", "淺", "熙", "濟(jì)", "震", "和", "閑", "霖", "向", "波", "博", "游", "雨", "湛", "奔", "夫", "潮",
"深", "岸", "輝", "浚", "復(fù)", "封", "飛", "朋", "江", "奉", "暉", "繪", "浪", "鳴", "百", "鶴", "沙", "漾",
"泥", "雪", "孝", "萬", "望", "瀚", "緲", "淡", "阜", "保", "闊", "洪", "恒", "伯", "玄", "風(fēng)", "淘", "合",
"文", "莫", "享", "滿", "溪", "妙", "邦", "華", "冰", "方", "寒", "鵬", "陌", "奮", "秉", "澤", "豪", "布",
"明", "民", "虎", "帆", "洋", "名", "拂", "海", "潭", "清", "勉", "源", "平", "物", "滄", "霄", "熊"]
result = [x + y for x in mu for y in shui] + [y + x for x in mu for y in shui]
return result
# 填寫表單,提交查詢
def queryName(browser, name):
radio = browser.find_element(By.ID, "cbz2")
radio.click()
xing = browser.find_element(By.NAME, "xing")
xing.send_keys("王")
ming = browser.find_element(By.NAME, "ming")
ming.send_keys(name)
year = Select(browser.find_element(By.NAME, "year"))
year.select_by_value("2024")
month = Select(browser.find_element(By.NAME, "month"))
month.select_by_value("5")
day = Select(browser.find_element(By.NAME, "day"))
day.select_by_value("20")
hour = Select(browser.find_element(By.NAME, "hour"))
hour.select_by_value("13")
minute = Select(browser.find_element(By.NAME, "minute"))
minute.select_by_value("14")
pid = Select(browser.find_element(By.NAME, "pid"))
pid.select_by_value("四川")
cid = Select(browser.find_element(By.NAME, "cid"))
cid.select_by_value("成都")
theform = browser.find_element(By.NAME, "theform")
time.sleep(2)
theform.submit()
# 定義自定義等待條件:檢查頁面標(biāo)題是否包含'姓名測試打分'字樣
def title_contains_website(driver):
return '姓名測試打分' in driver.title
# 定義自定義等待條件:檢查頁面標(biāo)題是否包含'500'字樣
def title_contains_500(browser):
if '500' in browser.title:
browser.refresh()
def start():
# 獲取姓名列表
nameList = getName()
# 獲取文本文件
textFile = getTextFile()
# 設(shè)置Chrome選項(xiàng)
chrome_options = Options()
# 設(shè)置不自動關(guān)閉瀏覽器
chrome_options.add_experimental_option('detach', True)
# 實(shí)例化Chrome驅(qū)動并設(shè)置選項(xiàng)
browser = webdriver.Chrome(options=chrome_options)
# 打開網(wǎng)頁并執(zhí)行操作...
browser.get('https://life.httpcn.com/xingming.asp')
assert "姓名測試打分_名字測試打分_測名字打分_漢程網(wǎng)" in browser.title
for name in nameList:
queryName(browser, name)
# 等待新頁面加載完成
try:
# 設(shè)置等待時間(例如10秒)
wait = WebDriverWait(browser, 10)
wait.until(title_contains_website)
except Exception as e:
title_contains_500(browser)
title_contains_500(browser)
# 查找目標(biāo)元素
score = browser.find_element(By.XPATH, "http://div[contains(text(), '姓名五格評分')]")
print("姓名:王" + name)
print(score.text)
# 寫入到文本
writeText(textFile, name, score.text)
# 跳回上頁
back = browser.find_element(By.XPATH, "http://li[contains(text(), '←返回重測')]")
time.sleep(10)
back.click()
textFile.close()
browser.quit()
quit()
# 腳本執(zhí)行完畢,但瀏覽器將保持打開狀態(tài)
# 姓名五格評分
if __name__ == '__main__':
start()
- 姓名打分,這里使用的第二個網(wǎng)站作為評分的網(wǎng)站,也可以修改腳本,更改想用的網(wǎng)站,這里提供一個思路