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 相关文章推荐
压缩包密码破解示例分享(类似典破解)
Jan 17 Python
python发送邮件接收邮件示例分享
Jan 21 Python
Python黑帽编程 3.4 跨越VLAN详解
Sep 28 Python
Python实现读取txt文件并画三维图简单代码示例
Dec 09 Python
matplotlib savefig 保存图片大小的实例
May 24 Python
python 字符串常用函数详解
Sep 11 Python
Python实现点云投影到平面显示
Jan 18 Python
python爬虫模块URL管理器模块用法解析
Feb 03 Python
Python爬虫爬取、解析数据操作示例
Mar 27 Python
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性(推荐)
Jul 03 Python
Python高阶函数与装饰器函数的深入讲解
Nov 10 Python
关于python scrapy中添加cookie踩坑记录
Nov 17 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继承中方法重载(覆盖)的应用场合
2015/02/09 PHP
10款实用的PHP开源工具
2015/10/23 PHP
jQuery 1.8 Release版本发布了
2012/08/14 Javascript
JavaScript在多浏览器下for循环的使用方法
2012/11/07 Javascript
Javascript连接多个数组不用concat来解决
2014/03/24 Javascript
深入理解JavaScript系列(29):设计模式之装饰者模式详解
2015/03/03 Javascript
JS实现控制表格单元格垂直对齐的方法
2015/03/30 Javascript
javascript运动详解
2015/07/06 Javascript
js jquery获取当前元素的兄弟级 上一个 下一个元素
2015/09/01 Javascript
Bootstrap弹出框(modal)垂直居中的问题及解决方案详解
2016/06/12 Javascript
利用原生JS自动生成文章标题树的实例
2016/08/22 Javascript
AngularJS实现数据列表的增加、删除和上移下移等功能实例
2016/09/05 Javascript
js阻止冒泡和默认事件(默认行为)详解
2016/10/20 Javascript
ES6新特性五:Set与Map的数据结构实例分析
2017/04/21 Javascript
浅谈JS中的常用选择器及属性、方法的调用
2017/07/28 Javascript
node中Express 动态设置端口的方法
2017/08/04 Javascript
AngularJS使用Filter自定义过滤器控制ng-repeat去除重复功能示例
2018/04/21 Javascript
初探Vue3.0 中的一大亮点Proxy的使用
2018/12/06 Javascript
教你搭建按需加载的Vue组件库(小结)
2019/07/29 Javascript
JavaScript:ES2019 的新特性(译)
2019/08/08 Javascript
解决vue-router 二级导航默认选中某一选项的问题
2019/11/01 Javascript
react 不用插件实现数字滚动的效果示例
2020/04/14 Javascript
python 生成目录树及显示文件大小的代码
2009/07/23 Python
Python中__init__.py文件的作用详解
2016/09/18 Python
python中的列表与元组的使用
2019/08/08 Python
Python Des加密解密如何实现软件注册码机器码
2020/01/08 Python
Selenium使用Chrome模拟手机浏览器方法解析
2020/04/10 Python
趣味游戏活动方案
2014/02/07 职场文书
敬老院院长事迹材料
2014/05/21 职场文书
电子银行业务授权委托书
2014/10/10 职场文书
手机销售员岗位职责
2015/04/11 职场文书
企业催款函范本
2015/06/24 职场文书
2016新年年会主持词
2015/07/06 职场文书
2016年“我们的节日·重阳节”主题活动总结
2016/04/01 职场文书
祝福语集锦:给妹妹结婚的祝福语
2019/12/18 职场文书
Java设计模式中的命令模式
2022/04/28 Java/Android