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 表示该文件夹下的文件listfor 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 etreedef 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 textdef 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 resdef get_files(path, rule):all = []# fpathe 表示当前正在访问的文件夹路径# dirs 表示该文件夹下的子目录名list# fs 表示该文件夹下的文件listfor 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 alldef 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.documentElementcourseInfo = 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.punctuationfile_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')

python 开发金山打字通辅助脚本相关推荐

  1. C语言编一个金山打字通小游戏,js实现金山打字通小游戏

    本文实例为大家分享了js实现金山打字通小游戏的具体代码,供大家参考,具体内容如下 字母匀速随机下落,键盘按下对应字母按键,字母消失重新生成新字母,新字母可帮助回调一部分初始高度 效果 1.页面内容 列 ...

  2. 官方金山打字通2009

    官方金山打字通2009 软件类别:国产软件/教育教学 运行环境: Win98/2000/XP/2003/Vista 软件语言:简体中文 开发作者: 金山软件公司 官方网站:http://www.syy ...

  3. PlayOnLinux 安装 金山打字通2016

    2019独角兽企业重金招聘Python工程师标准>>> 安装一个程序 安装未在列表中的程序 您想做什么? 选择新建虚拟盘安装程序,点击下一步. 请输入您应用程序的虚拟盘的名称 输入 ...

  4. 解决金山打字通不能缩小窗口问题

    前段时间,在学五笔, 用的是金山打字通, 但是金山打字通只能全屏显示,这个本没有什么的, 但是我又想在练习的同时看电影,所以这样缩小窗口就显得很重要了 在网上搜索了一下发现金山打字通本身就不能全屏. ...

  5. 小白练打字:金山打字通

    对于小白来说,首先肯定练打字,那么打字软件就很必要了,比如金山打字通 打开界面是这样 如果是完全小白,先用新手入门熟悉键盘 稍有基础则选英文打字进一步熟悉 最后当然练中文 除此之外还有打字 这就是打字 ...

  6. 金山打字通语句练习的文本

    金山打字通语句练习的文本 the with more could seem leave follow fact war company nothing near love often car diff ...

  7. 金山打字通生死时速游戏介绍

    金山打字通是一款帮助用户从零开始学习打字的软件,其内置的游戏使打字这一枯燥的活动变得更加有趣.在内置的五款游戏中,属生死时速(又名警察抓小偷)的制作最为精良,可玩性也最高. 设计元素 玩家 角色与特征 ...

  8. Dev-C++游戏创作之金山打字通(附带音乐)

    Hi!大家好!我是你们的编程小王子 最近一直拖着没更新,因为实在是没什么游戏思路.但是终于搞出来一个 金山打字通相信很多小伙伴们都认识,所以东西我就不多介绍,今天主要讲解音乐的播放(超级简单的)! / ...

  9. 金山打字通2011+免升级

    1,金山打字通2011下载地址:http://pan.baidu.com/s/1pKKLxrl ~everything和editplus在百度一搜就可以下载. 2,工具:everything + 金山 ...

  10. 金山打字通屡遭假冒 金山怒批“李鬼”带毒坑用户

    假冒软件不仅危害了正版软件的权益,还会给使用者带来危害,广受欢迎的金山明星产品金山打字通近期又出现了"李鬼"产品,除了假冒软件常有的不稳定.报错.重启 等问题外,假冒软件还携带电脑 ...

最新文章

  1. 【Junit】BeforeClass、Before、After、AfterClass
  2. 2017年10月05日普及组 约数
  3. supervisor python_使用supervisor运行python脚本
  4. js 字符串截取_【js】让你一次性搞清楚slice,substr,substring字符串截取函数
  5. html 中写样式,在html文档中如何定义内部样式表
  6. [Linux环境]-centos7下安装jdk1.8.0_141流程.
  7. apache 设置session超时时间_深入分析 Session 和 Cookie,看这篇就对了
  8. java jdk文档查询方法_查询Java JDK文档的元数据
  9. 刷爆了!国企33岁程序员年入40w,直言:想降薪进阿里钻研技术
  10. Jquery Ajax 异步设置Table中某列的值
  11. 未能加载文件或程序集或它的某一个依赖项。参数不正确
  12. Bron-kerbosch算法-求图的最大团,极大团
  13. 系统之家启动维护光盘v3.0[小盘·贺岁篇]
  14. echarts-横坐标文字竖排显示和倾斜45°显示
  15. X509证书认证原理
  16. ” Microsoft.Office.Interop.Excel”无法引用
  17. 常微分方程组之龙格-库塔法
  18. 钉钉群机器人消息通知
  19. MFC中的CDC 绘图
  20. 广告公司不会被MCN干掉,但会被打残

热门文章

  1. Game.Physics.Engine.Development(游戏物理引擎开发)
  2. Java Apache POI 小记(读取Word通过模板创建PPT)
  3. Tomcat调优技巧
  4. 两个三维向量叉积_俩个三维向量叉乘怎么算啊?
  5. 有限元方法的核心思想是什么?
  6. windows下的内存型下载者病毒
  7. 一维码Code 128简介及其解码实现 zxing-cpp
  8. c# 小票打印机打条形码_C# Code 128条形码打印的问题
  9. 《西点军校的经典法则》序 -- 責任(せきにん)、栄誉(えいよ)、国家(こっか)...
  10. 【ASP.NET】ASP.NET入门