Python 实战:调用百度翻译 API 实现文本批量翻译

一、引言

在全球化的今天,文本翻译需求日益增长。百度翻译 API 提供了便捷的翻译服务,Python 则为我们调用该 API 提供了强大的支持。通过 Python 脚本,我们可以轻松实现文本的批量翻译,同时妥善处理 QPS(Queries Per Second,每秒查询率)限制,确保翻译任务的高效与稳定进行。

二、技术选型

  1. Python :作为编程语言,因其简洁语法和丰富库支持,适合快速开发。
  2. Requests :用于发送 HTTP 请求,获取 API 响应。
  3. Time :用于控制请求间隔,处理 QPS 限制。
  4. Pandas :用于存储和管理批量文本数据。

三、系统实现

(一)注册百度翻译 API

要在百度翻译开放平台(fanyi-api.baidu.com)注册账号并创建应用,获取 API Key 和 Secret Key。

(二)获取认证信息

注册后,进入 “控制台”>“应用列表”,创建新应用,获取 API Key 和 Secret Key。

(三)调用百度翻译 API

使用 Python 的 requests 库发送 HTTP 请求到百度翻译 API 接口,获取翻译结果。

import requests
import hashlib
import random
import time
import pandas as pd

# 获取认证信息
def get_authentication():
    appid = input("请输入你的 App ID: ")
    secret_key = input("请输入你的 Secret Key: ")
    return appid, secret_key

# 构造签名
def generate_sign(appid, text, salt, secret_key):
    sign_str = appid + text + str(salt) + secret_key
    sign = hashlib.md5(sign_str.encode('utf-8')).hexdigest()
    return sign

# 翻译文本
def translate_text(text, from_lang, to_lang, appid, secret_key):
    url = "https://fanyi-api.baidu.com/api/trans/vip/translate"
    salt = random.randint(32768, 65536)
    sign = generate_sign(appid, text, salt, secret_key)
    params = {
        'q': text,
        'from': from_lang,
        'to': to_lang,
        'appid': appid,
        'salt': salt,
        'sign': sign
    }
    response = requests.post(url, data=params)
    result = response.json()
    if 'trans_result' in result:
        return result['trans_result'][0]['dst']
    else:
        return '翻译失败'

# 处理 QPS 限制
def batch_translate_with_qps_limit_appid, secret_key, from_lang='auto', to_lang='en'):
    texts = ["Hello, world!", "Python is great.", "I love programming."]
    translated_texts = []
    for text in texts:
        translation = translate_text(text, from_lang, to_lang, appid, secret_key)
        translated_texts.append(translation)
        time.sleep(1)  # 控制请求间隔,避免超过 QPS 限制
    return translated_texts

# 主程序
if __name__ == "__main__":
    appid, secret_key = get_authentication()
    translated_texts = batch_translate_with_qps_limit(appid, secret_key)
    print("翻译结果:", translated_texts)

(四)批量翻译与 QPS 限制处理

百度翻译 API 通常对免费用户有限制,如每分钟最多 500 次请求、每秒最多 1 次请求等。在进行批量翻译时,需控制请求频率,避免超出限制导致请求被拒绝。

通过在每次请求后添加适当的延迟(如 time.sleep(1)),可以确保请求频率符合 API 的 QPS 限制。对于大规模的翻译任务,可以将文本分批处理,并在每批请求之间设置足够的延迟。

(五)存储翻译结果

将翻译结果存储在 pandas DataFrame 中,便于后续的查看、分析或进一步处理。

# 存储翻译结果
def store_translations(texts, translated_texts):
    df = pd.DataFrame({'Original Text': texts, 'Translated Text': translated_texts})
    df.to_excel('translations.xlsx', index=False)
    print("翻译结果已保存到 translations.xlsx 文件。")

# 主程序
if __name__ == "__main__":
    appid, secret_key = get_authentication()
    texts = ["Hello, world!", "Python is great.", "I love programming."]
    translated_texts = batch_translate_with_qps_limit(texts, appid, secret_key)
    store_translations(texts, translated_texts)

四、总结与展望

本文详细介绍了如何使用 Python 调用百度翻译 API 实现文本批量翻译,并处理 QPS 限制。通过控制请求频率和合理存储翻译结果,我们可以高效地完成批量翻译任务。

未来,可以进一步优化代码,如通过多线程提高翻译效率(在允许的 QPS 范围内)、增加错误重试机制以提高翻译的可靠性等。希望本文能为读者在文本翻译任务中提供有价值的参考。

python爬虫图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值