其实就是用response,urllib库向百度翻译请求网页,再用json,hashlib来解析获取到的数据。不过只是用python页面来充当交互页面,功能跟在百度翻译翻译文字没有出入。里面代码很多并没有完善,只是能用的程度,不过扩展性很好,下面来展示具体操作:
首先最重要的是开启百度翻译的开发者功能,下面我来将如何开通
首先,进入这个网址,参考它给的帮助,来注册一个百度翻译开发平台的账户。然后,申请一个高级版的通用文本翻译,里面填的随便填填就行,很容易过的。最后获取它给的appid和密钥。
https://fanyi-api.baidu/doc/21
使用您的百度账号登录百度翻译开放平台;
注册成为开发者,获得 APPID ;
进行开发者认证(如仅需标准版可跳过);
开通通用翻译API服务:开通链接;
参考技术文档和 Demo 编写代码。
它要的实例请求参数
q=apple
from=en
to=zh
appid=2015063000000001(请替换为您的appid)
salt=1435660288(随机码)
平台分配的密钥: 12345678
把上面的弄好,开始进行编写代码操作,首先导入所需库,不必多说,没有的用pip自行安装一下
import hashlib
import random
import json
from urllib.parse import urlencode
import requests
import sys
然后,定义一个验证函数
def build_params(query, from_lang=fromlang__, to_lang=tolang__):
appid = '20250107002247015'
secret_key = 'zSMWEKhPRrOpKrmWZfvi'
salt = str(random.randint(32768, 65536))
sign = appid + query + salt + secret_key
m1 = hashlib.md5()
m1.update(sign.encode('utf-8'))
sign = m1.hexdigest()
params = {
'q': query,
'from': from_lang,
'to': to_lang,
'appid': appid,
'salt': salt,
'sign': sign
}
return params
再定义一个爬数据的函数
def translate(query, from_lang=fromlang__, to_lang=tolang__):
url = 'https://fanyi-api.baidu/api/trans/vip/translate'
params = build_params(query, from_lang, to_lang)
response = requests.get(url, params=params)
if response.status_code == 200:
result = response.json()
if 'trans_result' in result:
translations = [item['dst'] for item in result['trans_result']]
return '\n'.join(translations)
else:
print("Error:", result.get('error_msg', 'Unknown error'))
return None
else:
print(f"HTTP Error: {response.status_code}")
return None
执行体,不要在意里面的操作
if __name__ == '__main__':
while True:
print('-----------------------------------------')
print('【1 自动检测】 【2 中文】 【3 英文】 【4 日文】')
pd_1 = int(input('输入语言(输入数字序号):'))
if pd_1 == 1:
fromlang__ = 'auto'
elif pd_1 == 2:
fromlang__ = 'zh'
elif pd_1 == 3:
fromlang__ = 'en'
elif pd_1 == 4:
fromlang__ = 'jp'
else:
pd__ = 0
print(' · · · · · ')
print('【1 英文】 【2 中文】 【3 日文】 【4 俄文】 【5 韩文】 【6 法文】')
pd_2 = int(input('输出语言(输入数字序列):'))
if pd_2 == 1:
tolang__ = 'en'
elif pd_2 == 2:
tolang__ = 'zh'
elif pd_2 == 3:
tolang__ = 'jp'
elif pd_2 == 4:
tolang__ = 'ru'
elif pd_2 == 5:
tolang__ = 'kor'
elif pd_2 == 6:
tolang__ = 'fra'
else:
pd__ = 0
if pd__ == 1:
print(' · · · · · ')
text_to_translate = input("请输入要翻译的文字:")
translated_text = translate(text_to_translate, from_lang=fromlang__, to_lang=tolang__)
if translated_text is not None:
print(' · · · · · ')
print(f"翻译结果:\n{translated_text}")
print(' · · · · · ')
exit1 = int(input('是否退出(1退出 2继续):'))
if exit1 == 1:
print('已退出')
sys.exit(0)
elif pd__ == 0:
print(' · · · · · ')
print('输入有误!')
print('已退出')
sys.exit(0)
执行结果
-----------------------------------------
【1 自动检测】 【2 中文】 【3 英文】 【4 日文】
输入语言(输入数字序号):2
· · · · ·
【1 英文】 【2 中文】 【3 日文】 【4 俄文】 【5 韩文】 【6 法文】
输出语言(输入数字序列):3
· · · · ·
请输入要翻译的文字:没事吧,我可是最强的,看招,【神明在上·无限·无垠黑洞】
· · · · ·
翻译结果:
大丈夫か、私は最強だ、見て、【神は上にいる・無限・無限のブラックホール】
· · · · ·
是否退出(1退出 2继续):1
已退出
完整代码
import hashlib
import random
import json
from urllib.parse import urlencode
import requests
import sys
tolang__ = 'auto' #变量
fromlang__ = 'en'
pd__ = 1
def build_params(query, from_lang=fromlang__, to_lang=tolang__): #请求的变量的函数
appid = '20250107002247015' # 替换为你的百度翻译给的App ID
secret_key = 'zSMWEKhPRrOpKrmWZfvi' # 替换为你的百度翻译给的密钥
salt = str(random.randint(32768, 65536))
sign = appid + query + salt + secret_key
m1 = hashlib.md5()
m1.update(sign.encode('utf-8'))
sign = m1.hexdigest()
params = { #一些百度翻译要求的数据
'q': query,
'from': from_lang,
'to': to_lang,
'appid': appid,
'salt': salt,
'sign': sign
}
return params
def translate(query, from_lang=fromlang__, to_lang=tolang__): #主体函数
url = 'https://fanyi-api.baidu/api/trans/vip/translate' #百度翻译专门连接的网址
params = build_params(query, from_lang, to_lang)
response = requests.get(url, params=params)
if response.status_code == 200: #连接成功的话执行
result = response.json()
if 'trans_result' in result: #许多语法函数功能可以自搜讲解,在此不多赘述
translations = [item['dst'] for item in result['trans_result']]
return '\n'.join(translations)
else:
print("Error:", result.get('error_msg', 'Unknown error'))
return None
else:
print(f"HTTP Error: {response.status_code}") #错误原因
return None
if __name__ == '__main__':
while True:
print('-----------------------------------------') #不要在意,能用的程度
print('【1 自动检测】 【2 中文】 【3 英文】 【4 日文】')
pd_1 = int(input('输入语言(输入数字序号):'))
if pd_1 == 1:
fromlang__ = 'auto'
elif pd_1 == 2:
fromlang__ = 'zh'
elif pd_1 == 3:
fromlang__ = 'en'
elif pd_1 == 4:
fromlang__ = 'jp'
else:
pd__ = 0
print(' · · · · · ')
print('【1 英文】 【2 中文】 【3 日文】 【4 俄文】 【5 韩文】 【6 法文】')
pd_2 = int(input('输出语言(输入数字序列):'))
if pd_2 == 1:
tolang__ = 'en'
elif pd_2 == 2:
tolang__ = 'zh'
elif pd_2 == 3:
tolang__ = 'jp'
elif pd_2 == 4:
tolang__ = 'ru'
elif pd_2 == 5:
tolang__ = 'kor'
elif pd_2 == 6:
tolang__ = 'fra'
else:
pd__ = 0
if pd__ == 1:
print(' · · · · · ')
text_to_translate = input("请输入要翻译的文字:")
translated_text = translate(text_to_translate, from_lang=fromlang__, to_lang=tolang__) #获取文本
if translated_text is not None:
print(' · · · · · ')
print(f"翻译结果:\n{translated_text}")
print(' · · · · · ')
exit1 = int(input('是否退出(1退出 2继续):')) #输入正确可手动退出或继续
if exit1 == 1:
print('已退出')
sys.exit(0)
elif pd__ == 0: #输入有误自动退出
print(' · · · · · ')
print('输入有误!')
print('已退出')
sys.exit(0)
发布评论