Python 翻译查词接口笔记
Python 翻译查词接口笔记
一个学长想让我用 Python 写个翻译词的接口,调用时给一个中文或英文的词,返回前 5 个翻译,如果翻译数不足 5 就全部返回,在查找 API 时遇到了一些坑,做一些记录。
翻译接口类型
本地型
googletrans
优点:
1,接口使用方便;
2,本地调用,速度比较快;
3,支持多种语言;
缺点:
只能返回一个翻译结果。
下载:
pip install googletrans
复制代码
使用示例:
from googletrans import Translatortranslate = Translator()
result = translate.translate('你好')
print(result.text)
复制代码
可在本地使用的翻译 api 只有 googletrans。
在线型
金山查词(最适合)
优点:
1,使用方便,api key 很快就能申请下来;
2,中译英速度较快;
3,有多个翻译返回结果。
缺点:
1,只支持中文和英文的互译;
2,英译中速度较慢。
使用说明:
调用接口后的返回格式:XML/JSON 默认XML
传入参数: w : 单词/汉字 type : 返回格式 为空是xml 传入 xml 或者 json key : 您申请到的key
例如:dict-co.iciba.com/api/diction…
JSON 字段解释(英文)
{
'word_name':'' #单词
'exchange': '' #单词的各种时态
'symbols':'' #单词各种信息 下面字段都是这个字段下面的
'ph_en': '' #英式音标
'ph_am': '' #美式音标
'ph_en_mp3':'' #英式发音
'ph_am_mp3': '' #美式发音
'ph_tts_mp3': '' #TTS发音
'parts':'' #词的各种意思
}JSON 字段解释(中文)
{
'word_name':'' #所查的词
'symbols':'' #词各种信息 下面字段都是这个字段下面的
'word_symbol': '' #拼音
'symbol_mp3': '' #发音
'parts':'' #汉字的各种翻译 数组
'net_means': '' #网络释义
}
复制代码
返回结果示例:(dict-co.iciba.com/api/diction…)
{"word_name":"\u7167\u7247","symbols":[{"word_symbol":"zh\u00e0o pi\u00e0n","symbol_mp3":"","parts":[{"part_name":"","means":[{"word_mean":"photograph","has_mean":"1","split":1},{"word_mean":"photoprint","has_mean":"1","split":1},{"word_mean":"pin","has_mean":"1","split":1},{"word_mean":"picture","has_mean":"1","split":1},{"word_mean":"photo","has_mean":"1","split":0}]}],"ph_am_mp3":"","ph_en_mp3":"","ph_tts_mp3":"","ph_other":""}]}
复制代码
代码示例:
def process_ch2en_request(request_url, form_data):try:r = requests.get(request_url, params=form_data)data = r.json()except Exception as e:print('request error occurred')try:symbols = data['symbols'][0]parts = symbols['parts'][0]means = parts['means']words_length = 5means_length = len(means)if means_length < 5:words_length = means_lengthword_means = []for i in range(0, words_length):word_means.append(means[i]['word_mean'])return word_meansexcept KeyError as e:print(form_data['w'] + " doesn't have appropriate translation")return []
复制代码
注意点:
1,有些单词没有对应的翻译,比如在金山词霸上查 暑假,有翻译,查 放暑假,也有翻译,但在接口中 放暑假 没有对应的翻译;
2,英译中我在 3000 多调用后有时会返回空,但将词放入网址直接翻译返回的 json 是正常的,所以最好还是加上异常处理;
3,中译英和英译中的接口返回数据格式不一样,调用的时候注意区分好;
百度翻译
优点:
1, 文档比较详细;
2,提供多种不同专用领域的翻译接口,比如通用翻译,语种识别,拍照翻译等;(虽然都没试过)
缺点:
1,使用较复杂,有对返回数据的加密处理,需要自己结合文档处理数据;
2,有翻译字符数限制,当月超过 200万 字符需支付超出部分费用;
3,由于是网络调用,多少应该会慢一些;
4,只能返回一个翻译结果。
因为看了百度翻译的文档后知道只能返回一个结果就没有使用,但文档还是挺详细的,使用起来应该还比较简单。
(有道翻译)[fanyi.youdao.com/openapi]
优点:
1,使用简单,没有对数据加密处理;
缺点:
1,请求频率限制是每小时 1000 词,超过限制会被封禁;
2,词典翻译只支持中英文互译;
3,字符长度不能超过 200 个字符;
4,只返回一个翻译结果。
也是看了只返回一个翻译结果就没再使用。。。
Google翻译
优点:
1,支持多种自然语言;
2,支持多种编程语言,Python,Java,C#,GO等等;
3,文档很详细;
缺点:
1,文档虽然很详细但还是挺复杂的......不知道看哪里...;
2,申请免费试用需要填写 visa 卡;
3,好像是只返回一个翻译结果;
4,使用的时候也有限额;
5,返回结果有加密,需要按照文档处理。
同样也是因为只返回一个结果放弃了。。。(更重要的也是穷学生没有 visa 信用卡......)。
待尝试
因为 Google translate 的接口只返回一个结果,但网页版的 Google 翻译可以有多个返回结果,并且有标有星级显示相关度,应该可以写爬虫通过网页版 Google 翻译进行多返回结果的翻译,但速度应该会很慢......
个人代码实现(金山查词接口):
import requests
import csv
import xlrdmy_key = '***'
look_up_type = 'json'def process_ch2en_request(request_url, form_data):try:r = requests.get(request_url, params=form_data)data = r.json()except Exception as e:print('request error occurred')try:symbols = data['symbols'][0]parts = symbols['parts'][0]means = parts['means']words_length = 5means_length = len(means)if means_length < 5:words_length = means_lengthword_means = []for i in range(0, words_length):word_means.append(means[i]['word_mean'])return word_meansexcept KeyError as e:print(form_data['w'] + " doesn't have appropriate translation")return []def process_en2ch_request(request_url, form_data):try:r = requests.get(request_url, params=form_data)data = r.json()except Exception as e:print('request error occurred')try:symbols = data['symbols'][0]parts = symbols['parts'][0]means = parts['means']words_length = 5means_length = len(means)if means_length < 5:words_length = means_lengthword_means = []for i in range(0, words_length):word_means.append(means[i])return word_meansexcept KeyError as e:print(form_data['w'] + " doesn't have appropriate translation")return []def jinshan(word, lan2lan):request_url = 'http://dict-co.iciba.com/api/dictionary.php?'form_data = {'w': word, 'key': '***','type': 'json'}if(lan2lan=='en2ch'):word_means = process_en2ch_request(request_url, form_data)elif(lan2lan=='ch2en'):word_means = process_ch2en_request(request_url, form_data)return word_meansdef translate2csv(file2store, original_word, lan2lan):word_means = jinshan(original_word, lan2lan)with open(file2store, 'a', encoding='utf-8') as csv_file:writer = csv.writer(csv_file)for word_mean in word_means:writer.writerow([original_word, word_mean])def translate_csv2csv(csv2read, csv2write, lan2lan):with open(csv2read, 'r', encoding='utf8') as csv_file:reader = csv.reader(csv_file)for row in reader:if row[0].isdigit():original_word = row[1]translate2csv(csv2write, original_word, lan2lan)def translate_xls2csv(xls2read, csv2write, lan2lan):workbook = xlrd.open_workbook(xls2read)booksheet = workbook.sheet_by_index(0)rownum = booksheet.nrowsfor i in range(0, rownum):cell_1 = booksheet.cell_value(i, 0)if isfloat_str(cell_1):original_word = booksheet.cell_value(i, 1)print(original_word)translate2csv(csv2write, original_word, lan2lan)def isfloat_str(str_number):try:int(str_number)return Trueexcept ValueError:return Falsedef translate_txt2csv(txt2read, csv2write, lan2lan):with open(txt2read, 'r', encoding='GBK') as f:for line in f:word_in_line = line.split()print(word_in_line)original_word = word_in_line[1]translate2csv(csv2write, original_word, lan2lan)if __name__ == '__main__':translate_csv2csv('test.csv', 'test_store.csv', 'ch2en')
复制代码
如果大家有更合适的 api 接口或者更合适的代码实现希望可以评论帮忙一块修改一下(ノ ̄▽ ̄)
转载于:https://juejin.im/post/5ce2a230e51d45109618dc53
Python 翻译查词接口笔记相关推荐
- quicker + Golden Dict 实现比欧陆词典更好用的免费查词翻译神器
免费.纯净无广告.界面简洁,Golden Dict 搭配词库文件,就成为桌面端的查词翻译神器. 然而有时候遇到阅读外文文档.源码注释时,Golden Dict 不支持整句翻译,不支持OCR 文字识别, ...
- 知云文献翻译打不开_沙拉查词:你从未有过的体验,科研文献查词翻译插件
在长期接触外文文献的过程中,想必各位童鞋也陆续的接触过一系列的翻译软件,诸如谷歌翻译.有道翻译.百度翻译.划词翻译.知云翻译等等,使用体验千差万别,不一而足. (关于知云翻译,早前也有介绍:知云文献翻 ...
- 网络请求(四)Retrofit实战——金山词霸查词API遇到的问题
文章目录 准备工作 代码 遇到问题 解决方案 报错问题 准备工作 在上一篇博客 网络请求(三)--Retrofit的get和post请求的用法 中,每日一词的json格式比较简单,于是试了一下使用AP ...
- 【工具】Vscode翻译插件推荐(不用谷歌翻译api、支持短句英汉互译、支持查词、支持自动补全、不需要浏览器)
需求: 1)偶尔需要查英文生词: 2)有时候想不起来中文对应的英文: 3)不想回到浏览器打开一堆网页: 4)谷歌翻译挂了. 偶尔需要的需求: 1)短句翻译. 因为谷歌翻译挂了,首先,排除最热门的翻译插 ...
- 浏览器插件沙拉查词无法正常翻译,配置词典
文章目录 1 沙拉查词无法正常翻译 2 解决办法 2.1 百度API 2.1.1 注册[百度翻译开发平台](https://fanyi-api.baidu.com/) 2.1.2 登录并申请通用翻译A ...
- python用法查询软件_GitHub - ahahahahawd/youdao: 基于python 的命令行下查词工具,使用有道api...
youdao 简介 这是一个基于Python 在控制台下查单词的小工具. 这个小程序是受https://github.com/Flowerowl/ici 启发, 用requests 库和有道的API ...
- 谷歌浏览器翻译插件 saladict:沙拉查词
沙拉查词插件简介 Saladict是一个很好用的网页划词翻译Chrome插件,中文名沙拉查词,功能非常多,支持英汉.英英.俚语.词源.权威例句.汉语等超多词典,并且界面非常清爽,划词翻译速度非常快.支 ...
- 知云文献翻译打不开_沙拉查词—— 划线翻译的一股清流
点击上方 蓝字关注我们,有意外惊喜哦 好久不见,甚是想念~ 十方小萌新也和大家一样,每天在看不完的文献中冥思苦想,在做不完的实验中辗转穿梭.之前给大家推荐过集PDF功能与翻译引擎于一身的" ...
- 使用Python调用mdx字典文件进行查词
简介 本文只是记录一下,自己用python从mdx字典文件中批量提取单词和所需部分词义的代码. 如果你是需要自己打包制作或编辑mdx文件,可以去pdawiki论坛,那里有完整的字典制作专区,可以了解方 ...
最新文章
- 一张图解释SQL Server集群、镜像、复制、日志传送
- 程序员都讨厌写文档?这4个工具让你事半功倍
- python3根据地址批量获取百度地图经纬度
- 根据ABAP类方法的形式参数名,反查是哪个方法定义了该形式参数
- thinkphp+mysql+join+where_thinkphp5.0 多join时where无法between
- mysql事务总结_MySQL数据库和相关事务总结
- 现代程序设计 作业4
- 解决ssh或ftp下root用户认证失败问题
- 剖析 ADO.NET 批处理更新
- python 帮助文档下载地址
- 19年6月英语六级第一套听力单词
- 【色彩管理】ICC曲线制作教程
- 2022.5.6 java标识符
- POJ 3345 Bribing FIPA 树上背包
- 学习日志12:DoS技术及工具总结
- 服务器双向同步文件,lsyncd配置两台服务器文件双向实时同步
- springboot项目在服务器怎么启动,springboot在服务器上启动的几种方式,亲测通过!...
- c语言 'max' : undeclared identifier,c语言中undeclared identifier是什么意思?
- python itchat实现微信自动回复
- Scratch课程设计(四)
热门文章
- Ubuntu架设mc_server服务器详细过程
- Java——okhttp3调用API接口
- 麦肯锡:看好中国数字经济
- Flutter | row 平分
- 大力哥谈 DALI - DALI 很牛?DALI 很 Low!
- 【格式转换程序软件集】---[A2B]---集中收集-不断更新[2008-3-29] 软件 软件 杭州志彬电脑维修网
- 站内seo网站优化需要做好哪些工作?
- epson应用程序Android,Epson Run Connect
- 研究生两年时间发表论文11篇
- jQuery 制作交通信号灯红绿灯动画效果