"""用百度汉语做 在线词语翻译"""
import requests
from lxml import etree
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36",
}
query = input("请输入查询词语\n")
url = f"https://hanyu.baidu.com/s?wd={query}"
print("正在尝试链接%s" %url)
# 向浏览器发起请求
res = requests.get(url,headers=headers)
# 获取response数据
data = res.content.decode()
# 将获取的response转换成ElementUnicodeResult 用于xpath数据提取
html = etree.HTML(data)
# 拼音
pinyin = html.xpath('//*[@id="basicmean-wrapper"]/div[1]/dl/dt/span/text()')[0]
# 词语解释
explain = html.xpath('//*[@id="basicmean-wrapper"]/div[1]/dl/dd/p/text()')[0]
# 语音播放
voice = html.xpath('//*[@id="pinyin"]/h2/span/a/@url')
# 将语音播放文件保存到本地
res = requests.get(voice[0], headers=headers)
file_name = query + ".mp3"
with open(file_name, "wb")as f:
f.write(res.content)
# 将<class 'lxml.etree._ElementUnicodeResult'>转化成字符串类型
str_pinyin = ""
str_explain = ""
# 总字典
ciyu_dict = {}
for j in pinyin:
str_pinyin = str_pinyin + str(j)
ciyu_dict["拼音"] = str_pinyin
for i in explain:
str_explain = str_explain + str(i)
str_explain = str_explain.strip() #去换行和空格
ciyu_dict["解释"] = str_explain
ciyu_dict["语音"] = file_name
print(ciyu_dict)