Python实现微信翻译机器人的方法


Posted in Python onAugust 13, 2019

相信大家在日常学习或者是阅读英文文章的过程中,难免会出现几个不认识的单词,或者想快速翻译某段英文的意思。

今天,利用Python爬虫等知识,教大家打造一个微信下的翻译小助手。好吧,开始干活。

先来看看效果如何

发送要翻译的内容给我们的翻译小助手,它会自动回复翻译好的内容。

Python实现微信翻译机器人的方法

环境配置:

Python版本:3.6.0

系统平台:Windows 10 X64

IDE:pycharm

相关模块:

json模块

itchat模块

re模块

request模块

parse模块

以及一些Python自带的模块。

根据内容获取翻译的结果

这里使用的是有道翻译API接口。大致思路说一下:

1. 创建连接接口 2. 创建要提交的数据 3. 将数据转化为服务器可以处理的信息并提交

4. 返回翻译结果

这部分功能我们封装成一个函数,参数是需要发送的微信用户名,需要翻译的内容。

数据格式我们是以json的格式发送过去的,然后获取的也是json的数据格式,该过程需要做些转换。

还需要把数据转换成utf-8的编码,回来的数据也需要做相应的转换和解析,具体看下面代码:

def translate(userName, content):
   req_url = 'http://fanyi.youdao.com/translate' # 创建连接接口
   # 创建要提交的数据
   Form_Date = {}
   Form_Date['i'] = content # 输入要翻译的内容
   Form_Date['doctype'] = 'json'
 
   data = parse.urlencode(Form_Date).encode('utf-8') # 数据转换
   response = request.urlopen(req_url, data) # 提交数据并解析
  html = response.read().decode('utf-8') # 服务器返回结果读取
  # 可以看出html是一个json格式
  translate_results = json.loads(html) # 以json格式载入
  translate_results = translate_results['translateResult'][0][0]['tgt'] # json格式调取
  print(translate_results) # 输出结果
  itchat.send(translate_results, toUserName=userName) #发送翻译结果

不了解的同学在仔细看看代码注释。

微信收发送消息

关于微信收发送消息呢,可以看看之前Python打造天气预报机器这一篇文章,代码是直接从那边稍加修改搬过来的。

那边是获取天气,这边是获取翻译结果,思路都是一样的。直接看代码就可以了:

# 如果对方发的是文字,则我们给对方回复以下的东西
 @itchat.msg_register([TEXT])
 def text_reply(msg):
   match = re.search('翻译',msg['Text'])
   if match:
     content = msg['Text'][msg['Text'].find("+")+1:]
     translate(msg['FromUserName'], content)
itchat.auto_login()
itchat.run()

我们需要对消息进行匹配分析,以便确定用户需要的是翻译功能而不是天气预报等功能,所以需要利用re进行匹配一下关键字。

然后调用translate函数进行获取发送。

完整代码:

# 有道翻译结果获取
 '''
大致思路如下
 1.  创建连接接口
 
 2.  创建要提交的数据
 
.  将数据转化为服务器可以处理的信息并提交
.  返回翻译结果
'''
# 引入python中内置的包json. 用来解析和生成json数据的
import json
import itchat
import re
from itchat.content import *
from urllib import request, parse
def translate(userName, content):
  req_url = 'http://fanyi.youdao.com/translate' # 创建连接接口
  # 创建要提交的数据
  Form_Date = {}
  Form_Date['i'] = content # 输入要翻译的内容
  Form_Date['doctype'] = 'json'
  data = parse.urlencode(Form_Date).encode('utf-8') # 数据转换
  response = request.urlopen(req_url, data) # 提交数据并解析
  html = response.read().decode('utf-8') # 服务器返回结果读取
  # 可以看出html是一个json格式
  translate_results = json.loads(html) # 以json格式载入
  translate_results = translate_results['translateResult'][0][0]['tgt'] # json格式调取
  print(translate_results) # 输出结果
  itchat.send(translate_results, toUserName=userName) #发送翻译结果
# 如果对方发的是文字,则我们给对方回复以下的东西
@itchat.msg_register([TEXT])
def text_reply(msg):
  match = re.search('翻译',msg['Text'])
  if match:
    content = msg['Text'][msg['Text'].find("+")+1:]
    translate(msg['FromUserName'], content)
itchat.auto_login()
itchat.run()

总结

以上所述是小编给大家介绍的Python实现微信翻译机器人的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
布同自制Python函数帮助查询小工具
Mar 13 Python
tensorflow实现逻辑回归模型
Sep 08 Python
详解python--模拟轮盘抽奖游戏
Apr 12 Python
PyQt QListWidget修改列表项item的行高方法
Jun 20 Python
使用turtle绘制五角星、分形树
Oct 06 Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
Feb 26 Python
python GUI库图形界面开发之PyQt5布局控件QGridLayout详细使用方法与实例
Mar 06 Python
python将字典内容写入json文件的实例代码
Aug 12 Python
Python抖音快手代码舞(字符舞)的实现方法
Feb 07 Python
OpenCV-Python实现油画效果的实例
Jun 08 Python
总结Pyinstaller打包的高级用法
Jun 28 Python
分位数回归模型quantile regeression应用详解及示例教程
Nov 02 Python
python读写csv文件的方法
Aug 13 #Python
python根据多个文件名批量查找文件
Aug 13 #Python
详解django实现自定义manage命令的扩展
Aug 13 #Python
Python一键安装全部依赖包的方法
Aug 12 #Python
Python之time模块的时间戳,时间字符串格式化与转换方法(13位时间戳)
Aug 12 #Python
浅谈Python2之汉字编码为unicode的问题(即类似\xc3\xa4)
Aug 12 #Python
基于Python2、Python3中reload()的不同用法介绍
Aug 12 #Python
You might like
PHP 简单数组排序实现代码
2009/08/05 PHP
简单的php数据库操作类代码(增,删,改,查)
2013/04/08 PHP
利用location.hash实现跨域iframe自适应
2010/05/04 Javascript
JavaScript中各种编码解码函数的区别和注意事项
2010/08/19 Javascript
JavaScript 原型学习总结
2010/10/29 Javascript
jquery禁止输入数字以外的字符的示例(纯数字验证码)
2014/04/10 Javascript
js获取 type=radio 值的方法
2014/05/09 Javascript
jQuery.position()方法获取不到值的安全替换方法
2015/03/13 Javascript
jq实现左侧显示图片右侧文字滑动切换效果
2015/08/04 Javascript
JS实现可展开折叠层的鼠标拖曳效果
2015/10/09 Javascript
JS+CSS实现仿msn风格选项卡效果代码
2015/10/22 Javascript
一道JS前端闭包面试题解析
2015/12/25 Javascript
基于jQuery Tipso插件实现消息提示框特效
2016/03/16 Javascript
第一次动手实现bootstrap table分页效果
2016/09/22 Javascript
Angular表单验证实例详解
2016/10/20 Javascript
浅谈Node.js:fs文件系统模块
2016/12/08 Javascript
JS常用加密编码与算法实例总结
2016/12/22 Javascript
jQuery实现选项卡功能(两种方法)
2017/03/08 Javascript
Vue数组更新及过滤排序功能
2017/08/10 Javascript
详解tween.js的使用教程
2017/09/14 Javascript
你了解vue3.0响应式数据怎么实现吗
2019/06/07 Javascript
在vue中配置不同的代理同时访问不同的后台操作
2020/09/11 Javascript
[17:36]VG战队纪录片
2014/08/21 DOTA
python对字典进行排序实例
2014/09/25 Python
使用Pyinstaller的最新踩坑实战记录
2017/11/08 Python
Html5中的桌面通知Notification的实现
2018/09/25 HTML / CSS
购买限量版收藏品、珠宝和礼品:Bradford Exchange
2016/09/23 全球购物
全球领先的美容用品专卖店:Beauty Plus Salon
2018/09/04 全球购物
马来西亚演唱会订票网站:StubHub马来西亚
2018/10/18 全球购物
业务员简历自我评价
2014/03/06 职场文书
毕业自我鉴定书
2014/03/24 职场文书
校园环保建议书
2014/05/14 职场文书
诚信考试承诺书范文
2015/04/29 职场文书
保险公司反洗钱宣传活动总结
2015/05/08 职场文书
优秀教师工作总结2015
2015/07/22 职场文书
Spring this调用当前类方法无法拦截的示例代码
2022/03/20 Java/Android