大家好,欢迎来到IT知识分享网。
python 开发金山打字通辅助脚本
- 环境
- 开发步骤
- 代码
环境
这个脚本主要是靠python的pyautogui库实现,使用五笔输入法进行输入。
请先下载安装搜狗五笔或者别的五笔输入法,搜狗输入法下载
from xml.dom.minidom import parse
from lxml import etree
import requests, pyautogui, json, os, time, string
开发步骤
通过研究金山打字通的文件,发现金山打字通的文章存储在xml文件内
文件内容:
1.搜索出金山打字通根目录下所有的xml文件
def get_files(path,rule):
all = []
# fpathe 表示当前正在访问的文件夹路径
# dirs 表示该文件夹下的子目录名list
# fs 表示该文件夹下的文件list
for fpathe, dirs, fs in os.walk(path): # os.walk获取所有的目录
for f in fs:
if f.endswith(rule): # 判断是否是".xml"结尾
all.append(str(fpathe).replace('\\', '/', 100) + r'/' + str(f))
return all
2.解析xml文件
py_text = []
file = r"D:\Program Files (x86)\Typeeasy\11.5\course\test\cn\1.xml" #xml 文件路径
DOMTree=parse(file) # 打开xml文件
booklist=DOMTree.documentElement #获取XML文档对象
courseInfo = booklist.getElementsByTagName('courseInfo') #查找courseInfo元素
if courseInfo:
content = booklist.getElementsByTagName('item') #查找item元素
for con in content:
py_text.append(con.getAttribute('comparision')) #获取元素item的comparision属性内容,加入到列表
3.获取五笔字根
利用爬虫获取五笔字根
网站:https://qq.ip138.com/wb/wb.asp
def trf_get(text):
url = 'https://qq.ip138.com/wb/wb.asp'
data = {
'querykey': text}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36 Edg/98.0.1108.62'
}
res = requests.post(url, data=data, headers=headers) #使用post请求获取数据
html = etree.HTML(res.text) #解析html数据
bian = html.xpath('/html/body/div/div[2]/div[2]/div[2]/div[2]/table/tbody/tr[2]/td[2]/p/text()') #定位到数据,并获取
if bian:
return bian[0]
else:
return text
4.将获取到的字根进行保存与字根查询
def trf_jian(text):
file = open('trf_text.json', 'r', encoding='utf-8') # 创建存储字根的文件
zk = json.loads(file.read())
if text in zk: # 判断本地是否存在该文字
return zk[text]
else: # 如果不存在上网查询
res = trf_get(text) # 调用查询函数
j = {
text: res}
zk.update(j) #将数据保存到本地
with open('trf_text.json', 'w', encoding='utf-8') as f:
f.writelines(json.dumps(zk))
f.close() # 清理内存
file.close() # 清理内存
return res
5.输入功能
pun = string.punctuation # 所有的标点字符
file_name = '荷塘月色' # 文章标题
text = sa(file_name) # 调用查询函数
for t in text:
time.sleep(0.8) # 速度限制
a = trf_jian(t) # 查询文字
print(t, a)
pyautogui.typewrite(a) # 输入字根
if a not in pun:
pyautogui.press('space')
代码
import requests, pyautogui, json, os, time, string
from xml.dom.minidom import parse
from lxml import etree
def trf_get(text):
url = 'https://qq.ip138.com/wb/wb.asp'
data = {
'querykey': text}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36 Edg/98.0.1108.62'
}
res = requests.post(url, data=data, headers=headers)
html = etree.HTML(res.text)
bian = html.xpath('/html/body/div/div[2]/div[2]/div[2]/div[2]/table/tbody/tr[2]/td[2]/p/text()')
if bian:
return bian[0]
else:
return text
def trf_jian(text):
file = open('trf_text.json', 'r', encoding='utf-8')
zk = json.loads(file.read())
if text in zk:
return zk[text]
else:
res = trf_get(text)
j = {
text: res}
zk.update(j)
with open('trf_text.json', 'w', encoding='utf-8') as f:
f.writelines(json.dumps(zk))
f.close()
file.close()
return res
def get_files(path, rule):
all = []
# fpathe 表示当前正在访问的文件夹路径
# dirs 表示该文件夹下的子目录名list
# fs 表示该文件夹下的文件list
for fpathe, dirs, fs in os.walk(path): # os.walk获取所有的目录
for f in fs:
if f.endswith(rule): # 判断是否是".sfx"结尾
all.append(str(fpathe).replace('\\', '/', 100) + r'/' + str(f))
return all
def sa(file_name):
py_text = []
b = get_files(path=r'D:\Program Files (x86)\Typeeasy', rule=".xml")
for i in b:
DOMTree = parse(i)
booklist = DOMTree.documentElement
courseInfo = booklist.getElementsByTagName('courseInfo')
if courseInfo:
sa_file_name = courseInfo[0].getAttribute('alias')
if sa_file_name == file_name:
content = booklist.getElementsByTagName('item')
for con in content:
py_text.append(con.getAttribute('comparision'))
return ''.join(py_text)
return ''
if __name__ == "__main__":
time.sleep(5)
pun = string.punctuation
file_name = '荷塘月色'
text = sa(file_name)
for t in text:
time.sleep(0.8)
a = trf_jian(t)
print(t, a)
pyautogui.typewrite(a)
# time.sleep(0.51)
# pyautogui.screenshot('back.png')
# if opencv_img.imgs():
te = [';']
if not t in te:
if a not in pun:
pyautogui.press('space')
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/27499.html