前言
孩子出生了,懒得给孩子想名字,为了解决取名字难这个麻烦事,故写了个python脚本替自己完成。
原理
- 获得孩子出生的时间(生辰八字)
- 去算各大排盘软件上算下生辰八字属性,分析一下喜用神
- 知道了喜用神之后,便去寻找五行对应的字,可以百度五行字典
- 使用脚本,更改名字的数组,替换成自己喜用神的属性字,这里我的喜用神是木合水,就找来了相关的字
# 这是一个示例 Python 脚本。
import time
# 按 Shift+F10 执行或将其替换为您的代码。
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 = ["筱", "梵", "橙", "梓", "元", "本", "荣", "柯", "可", "关", "菲", "木", "树", "林", "枝", "栅", "桓", "森",
"彬", "杉", "权", "柱", "栋", "松", "柏", "萌", "蓝", "芙", "欣", "毅", "相", "科", "茂", "贤", "棕", "卷",
"谷", "君", "古", "原", "廉", "建", "庆", "桦", "统", "若", "攀", "栋", "荒", "何", "久", "侠", "奇", "朴",
"鸽", "东", "嘉", "冠", "啸", "祺", "琪", "雁", "宜", "琦", "枝", "坚", "昂", "毅", "歌", "标", "固", "吉",
"高", "康", "尧", "果", "杭", "语", "曲", "肖", "荷", "芹", "乾", "义", "杰", "皓", "凯", "狂", "勤", "彬",
"景", "月", "兼", "顷", "柏", "擎", "荣", "观", "笃", "恭", "柯", "言", "菲", "萧", "乔", "群", "谦", "国",
"极", "轻", "玉", "业", "材", "相", "苑", "倚", "岳", "柳", "贵", "悟", "健", "彦", "棋", "楷", "桐", "气",
"颜", "苛"]
# 五行属水的字
shui = ["云", "泽", "渊", "鸿", "满", "澜", "澄", "斐", "源", "默", "平", "凡", "淇", "淋", "淐", "淑", "淘", "淙",
"淞", "淡", "淬", "淮", "深", "淳", "添", "涟", "涣", "涤", "润", "涧", "涪", "涯", "涴", "涵", "淀", "淄",
"淅", "浦", "浩", "浪", "浮", "浴", "海", "涂", "涌", "涓", "涔", "涛", "池", "闻", "流", "霜", "福", "泉",
"宏", "弘", "浅", "熙", "济", "震", "和", "闲", "霖", "向", "波", "博", "游", "雨", "湛", "奔", "夫", "潮",
"深", "岸", "辉", "浚", "复", "封", "飞", "朋", "江", "奉", "晖", "绘", "浪", "鸣", "百", "鹤", "沙", "漾",
"泥", "雪", "孝", "万", "望", "瀚", "缈", "淡", "阜", "保", "阔", "洪", "恒", "伯", "玄", "风", "淘", "合",
"文", "莫", "享", "满", "溪", "妙", "邦", "华", "冰", "方", "寒", "鹏", "陌", "奋", "秉", "泽", "豪", "布",
"明", "民", "虎", "帆", "洋", "名", "拂", "海", "潭", "清", "勉", "源", "平", "物", "沧", "霄", "熊"]
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()
# 定义自定义等待条件:检查页面标题是否包含'姓名测试打分'字样
def title_contains_website(driver):
return '姓名测试打分' in driver.title
# 定义自定义等待条件:检查页面标题是否包含'500'字样
def title_contains_500(browser):
if '500' in browser.title:
browser.refresh()
def start():
# 获取姓名列表
nameList = getName()
# 获取文本文件
textFile = getTextFile()
# 设置Chrome选项
chrome_options = Options()
# 设置不自动关闭浏览器
chrome_options.add_experimental_option('detach', True)
# 实例化Chrome驱动并设置选项
browser = webdriver.Chrome(options=chrome_options)
# 打开网页并执行操作...
browser.get('https://life.httpcn.com/xingming.asp')
assert "姓名测试打分_名字测试打分_测名字打分_汉程网" in browser.title
for name in nameList:
queryName(browser, name)
# 等待新页面加载完成
try:
# 设置等待时间(例如10秒)
wait = WebDriverWait(browser, 10)
wait.until(title_contains_website)
except Exception as e:
title_contains_500(browser)
title_contains_500(browser)
# 查找目标元素
score = browser.find_element(By.XPATH, "//div[contains(text(), '姓名五格评分')]")
print("姓名:王" + name)
print(score.text)
# 写入到文本
writeText(textFile, name, score.text)
# 跳回上页
back = browser.find_element(By.XPATH, "//li[contains(text(), '←返回重测')]")
time.sleep(10)
back.click()
textFile.close()
browser.quit()
quit()
# 脚本执行完毕,但浏览器将保持打开状态
# 姓名五格评分
if __name__ == '__main__':
start()
- 姓名打分,这里使用的第二个网站作为评分的网站,也可以修改脚本,更改想用的网站,这里提供一个思路