获取必应网站翻译结果,注意中文翻译为英文与英文翻译为中文两种情况均需考虑。
网址:https://cn.bing.com/translator/ 一、分析网页
这里建议先在空白的时候打开网页检查进network,然后直接输入一句话,这样右边加载出来的包少,便于寻找目标URL。
这是原文请求参数,所以data参数就可以按照这个格式构建。data:{‘fromLang’:‘auto-detect’,‘text’:原文,‘to’:‘zh-Hans’} ,大概就是这样了。这里的’fromLang’:'auto-detect’具体表示个啥我也不要清楚,可能表示一个句子的意思吧,试过汉译英英译汉这个都不变,所以直接让它这样就得了。
‘text’:原文,这个就不用说了,这是存原文的参数。
‘to’:‘zh-Hans’ 这个,表示译文是啥,zh-Hans表示简体中文,en表示英文,这里就只做汉译英英译汉了,其实别的语言有别的参数。
还有一点就是这个URL,它有翻译一个词一个词那种的,也有直接翻译一个句子的,我这里这个是直接翻译一个句子的,这么说吧,最好用直接翻译一个句子的,因为翻译句子的能翻译单个词的,翻译单个词的不一定能翻译一个句子,顶多就是在汉译英的时候首字母是大写的,别的毛病应该不大。
因为中英互译的时候控制译文的参数不一样,所以需要判断一下输入的是汉字还是单词,这里用这个
\u4e00 ~ \u9fff
这玩意是中文字符的编码范围。别的也没啥了。
二、代码
import requests
def start_tran():
content = input('需要翻译的内容呀:\n')
from_data = {}
for i in content:
if '\u4e00'<= i <= '\u9fff':
print('您输入的是中文!!!')
from_data = {'fromLang':'auto-detect','text':content,'to':'en'}
break
else:
print('您输入的是英文!!!')
from_data = {'fromLang':'auto-detect','text': content, 'to': 'zh-Hans'}
break
return from_data
def translate(from_data):
url = 'https://cn.bing.com/ttranslatev3?isVertical=1&&IG=FFEB3453664B412382446351E8F72096&IID=translator.5028.63'
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'}
r = requests.post(url,data = from_data ,headers=headers)
r.raise_for_status()
#print(r.status_code)
r.encoding = r.apparent_encoding
data = r.json() # 取出翻译结果
detectedLanguage = data[0]
translations = detectedLanguage['translations']
result = translations[0]['text']
print(result)
translate(start_tran())
还是JAVA的代码块好用(小声bb) 代码运行结果
需要翻译的内容呀:
我能送你回家吗,外面可能要下雨啦。
您输入的是中文!!!
Can I take you home? It may rain outside.
英译汉同样行得通。