Python3 + wxpython写的一个翻译工具
学习日语一直有一个问题,有些时候我们看到一句话,可能大致上能猜出来是什么意思,但是日语汉字却不知道怎么去读。我就有这样的烦恼,极大的降低了我对日语学习的热情。
于是这两天在公司闲暇之余,就想利用网上的api做一个日语汉字翻译假名的一个小工具。
一开始我想用百度翻译的api,因为百度翻译有一个显示日语假名的按钮可以查看。但是看起来很简单的api,却不知道为什么硬是拿不到翻译结果。回去用百度翻译默认的参数成功了,但是换了个关键字又无法获取。
其实就算成功了,也不太符合我的要求。因为百度翻译要能显示假名,必须得由某种语言翻译成日语,又不能同时选中日语,从心底里来说,我已经不愿意再多花时间去研究了。
于是我开始想着用python爬虫去实现,有道翻译,谷歌翻译,都没有显示假名的功能。天无绝人之路,我看到了江沪小D的单词翻译,下边正好显示了假名。
打开文本翻译,虽然没有显示假名的功能,但是后台有我想要的数据,还能选择日语到日语,这真的是让我喜出望外。不说了,开工!
一、分析请求
python爬虫最重要的是对请求的分析与构造,而刚好沪江小D在这一块却没那么麻烦。只需要写带上一个content参数,外加请求头的cookie就能拿到数据。翻译方向是拼接在访问路径里面的。
例如:https://dict.hjenglish.com/v10/dict/translation/jp/jp 表示从日语翻译到日语。
注意:cookie一定要有,不然会得到一个非正常访问的信息。
这里贴出获取响应结果的代码:
import requests
base_url = "https://dict.hjenglish.com/v10/dict/translation"
# 如果在公司需要设置代理,个人使用时不用proxies参数
proxies = {
'http': SETTINGS['http_proxy'],
'https': SETTINGS['https_proxy']
}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3756.400 QQBrowser/10.5.4043.400',
'referer': 'https://dict.hjenglish.com/app/trans',
'cookie': 'HJ_UID=62ecdcb4-18dd-b89a-39b8-d3ae29f7a945; TRACKSITEMAP=3%2C20%2C23; _SREG_20=www.baidu.com%7C%7Csearch%7Cdomain; _SREF_20=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DhyKgBOkGFQR01SSRmo7VknK4QwVQIldqklx5Rp8DnEZEuuKZKZLW6HA_szdxSEOUebC5lDawvY00P_wQbBhKcMfyRi1L_8i4NtSXXbpSHCkFAVUmErnF8jeIacjvCaWTF9a0YnL9vR3XJSErsWNjIa%26wd%3D%26eqid%3Dd56c85360010ae6b00000003603f21b6; _SREF_3=; _REF=; acw_tc=707c9fc316147644229968942e605090718ce7e184164b887c24be999348a4; HJ_CST=0; HJ_CSST_3=0; HJ_SID=4pdfs7-0aa1-46a9-a81d-52e432e2efd8; HJ_SSID_3=4pdfs7-51bb-42aa-824c-ffa74e82386d; _SREG_3=direct%7C%7Cdirect%7Cdirect; _REG=direct%7C%7Cdirect%7Cdirect'
}
session = requests.Session()
url = f"{base_url}/cn/jp"
response = ""
try:
response = session.post(url, data={
"content": keyword
}, proxies=proxies, headers=headers)
except:
print('网络连接错误!')
return None
if response.status_code != 200:
trans_result['trans_text'] = 'error!'
return None
res_dict = response.json()['data']
print(res_dict)
拿到了数据,大家就可以自由发挥了。我这边展示一下我的成果。
界面很简单,实现了各国语言之间的翻译,日语的情况下会将带假名和不带假名的结果显示在右边。下面是一个历史翻译记录,会保存在本地,每次打开应用程序自动加载。能获取到语音朗读的情况下,会自动朗读翻译结果。
以上就是本次学习的一个记录,欢迎大家留言探讨。程序已打包,请自行下载:https://download.csdn.net/download/qq_36991535/15561961,需要源码的朋友请私信我。
本次小工具的开发,只做学习使用。如有侵权,请联系QQ:1593324992,我将及时进行删除。