python调用百度翻译api进行翻译任务

老师给出了一个小任务,接着之前那篇文章,在读取一个存放地名的pkl文件之后,将地名进行翻译。因为第一接触这类任务,选择调用以下百度的api翻译接口,然后进行翻译。

调用百度翻译API

百度翻译开放平台 (baidu.com)

点进去链接,然后在首页进行登陆注册即可使用。

点进右上角管理控制台,会出现你的个人注册信息,我在这里选择注册是个人用户。

进行注册然后再填写认证即可。

再总览里可以升级服务,标准版和高级版都是免费的,只不过是每个月的免费使用额度不同,访问限制次数不同。

在开发者信息中可以查看个人的id和使用密钥。

注册完成之后,在上方的栏目中找到文档与支持,查看开发者文档,里面有详细的使用方法。主要包含了一些使用的注意事项,支持的语言有哪些等等,建议详细阅读这个开发者文档描写的很详细。

向下翻,找到各类语言demo。然后下载python版本的demo,里面就是官方对调用API接口的代码。根据我的任务要求,对代码做了一些修改,仅供大家参考。

# -*- coding: utf-8 -*-

# This code shows an example of text translation from English to Simplified-Chinese.
# This code runs on Python 2.7.x and Python 3.x.
# You may install `requests` to run this code: pip install requests
# Please refer to `https://api.fanyi.baidu.com/doc/21` for complete api document

import requests
import random
import json
from hashlib import md5

# Set your own appid/appkey.
appid = 'xxxxxxxx'#放入自己的appid
appkey = 'xxxxxxxxx'#放入密钥

# For list of language codes, please refer to `https://api.fanyi.baidu.com/doc/21`
from_lang = 'auto'#源语言
to_lang =  'zh'#翻译目标语言

endpoint = 'http://api.fanyi.baidu.com'
path = '/api/trans/vip/translate'
url = endpoint + path#进行网络请求的网址

query = 'apple'#需要翻译的原文

# Generate salt and sign
#调用百度翻译api需要两个字符串,一个是有翻译原文、密钥、appid以及一个随机数生成的。
# 另一个则是经过百度api自定义的一个MD5方法生成的字符串
def make_md5(s, encoding='utf-8'):#定义MD5函数
    return md5(s.encode(encoding)).hexdigest()#百度自定义的方法
def baidu_api(query,from_lang="auto",to_lang="zh"):#定义调用api接口函数
    salt = random.randint(32768, 65536)#随机数生成
    sign = make_md5(appid + query + str(salt) + appkey)#将字符进行拼接由函数MD5处理并得到sign

    # Build request
    #头部格式
    headers = {'Content-Type': 'application/x-www-form-urlencoded'}
    #
    payload = {'appid': appid, 'q': query, 'from': from_lang, 'to': to_lang, 'salt': salt, 'sign': sign}

    # Send request
    #request库获取数据有两个方式,第一个是get方法,通过向网站发起请求,一般是用来请求得到数据。
    # post方法则是向服务器提交请求,用来提交数据的
    r = requests.post(url, params=payload, headers=headers)
    result = r.json()

    # Show response
    return result["trans_result"][0]['dst']

print(baidu_api(query,from_lang,to_lang))

这是针对调用API接口部分代码,主要参数可以通过阅读官方的开发者文档就可以搞明白。主要是request库的post方法的一个调用。request主要有几个方法,一个是request.get()和request.post(),两者的区别就是get方法是向服务器请求数据,post则是想服务器发送请求然后向服务器传递数据。具体的方法讲解可以看着两位的,讲的很好。

get方法:python的request库详细讲解、七个方法、举例子爬取_python request_Yicsr的博客-CSDN博客

post方法:

python爬虫之requests库post请求_requests.post_naer_chongya的博客-CSDN博客

文件读取并实现翻译

经过文件的读取,我们发现pkl文件内部的数据形式主要是:

我们翻译仅需要地名也就是name下的数据,所以一会再输出数据时仅输出name下的数据即可,然后再去翻译即可。

import pickle
import time

import pandas as pd
# # 重点是rb和r的区别,rb是打开二进制文件,r是打开文本文件
path = r''#路径



import sys
sys.path.append(r"xxxxxxx")#文件路径

from Baidu_Text_transAPI import baidu_api

data = pd.read_pickle(path)#读取文件
print(data)
print(data["name"])
for i in data["name"]:
    time.sleep(1)
    print(baidu_api(i))

这里我们仅让name下的数据输出,翻译的也是name下的数据。这里在循环内设置了休眠一秒,因为高级版的限制是一面访问不超过一次,我么你就设定访问一次休眠一秒在访问下一次。

翻译部分结果如下图:

但是翻译的效果并不理想,因为文件中包含了较多的一些村落、乡镇级别的名字,无法识别出来,下一步打算调用一些其他的翻译API和大模型的API再试试效果如何。

要使用百度翻译API,您需要先在百度翻译开放平台注册并创建一个应用程序,然后获取应用程序的APP ID和密钥。 接着,在Python调用百度翻译API接口需要使用requests库,以下是一个示例代码: ```python import requests import json url = 'https://fanyi.baidu.com/v2transapi' app_id = 'your app id' secret_key = 'your secret key' def translate(text, from_lang, to_lang): data = { 'from': from_lang, 'to': to_lang, 'query': text, 'transtype': 'translang', 'simple_means_flag': '3', 'sign': '', 'token': '', } sign = app_id + text + str(1435660288) + secret_key sign = hashlib.md5(sign.encode()).hexdigest() data['sign'] = sign data['token'] = 'e8c37d1a59fdefa0e7e9e012c2261f48' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36', 'Referer': 'https://fanyi.baidu.com/', 'Origin': 'https://fanyi.baidu.com', 'Host': 'fanyi.baidu.com', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 'Accept-Encoding': 'gzip, deflate, br', 'Accept-Language': 'zh-CN,zh;q=0.8,en;q=0.6', 'Cookie': 'BAIDUID=your Baidu ID', } response = requests.post(url, headers=headers, data=data) content = json.loads(response.text) return content['trans_result']['data'][0]['dst'] ``` 在上面的代码中,您需要将“your app id”和“your secret key”替换为您自己的百度翻译应用程序的APP ID和密钥。还需要将“your Baidu ID”替换为您自己的百度ID。 然后,您可以调用“translate”函数并传递要翻译的文本,源语言和目标语言作为参数。例如: ```python text = 'Hello, World!' from_lang = 'en' to_lang = 'zh' translation = translate(text, from_lang, to_lang) print(translation) ``` 这将输出“你好,世界!”(Hello, World!的中文翻译)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值