自测 python 翻译的几种方法 (谷歌/百度/有道翻译)

本文介绍了一种使用有道翻译API进行文本翻译的方法,尤其针对含有emoji表情的文本翻译问题。通过破解接口限制,实现了不限次数且能正确处理emoji的表情翻译功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:工作需要,翻译的文本经常带有 emoji 表情。

 

1. 谷歌翻译( translate & googletrans python库)

优点:方便,简单

缺点:需要翻墙,translate 库有次数限制,googletrans 库不能翻译带有 emoji 表情的文本

 

2.  百度翻译

注册百度翻译开发者帐号,申请 appID & 密码, 免费 200万字符/月

缺点:不能翻译带有 emoji 表情的文本,会报错

 

3. 有道翻译(最终选择方案)

优点:(破解接口)没有次数限制,可以翻译带有 emoji 表情的文本(不会报错)。

注意事项:翻译次数较多时,控制调用速度,不要请求过快(本人控制在 4~7s)

代码如下:

import hashlib
import json
import requests
import time


class YouDaoTrans(object):
    def __init__(self):
        # 翻译请求的url http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule
        self.url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
        self.headers = {
            'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36',
            'Cookie': 'OUTFOX_SEARCH_USER_ID=308378051@101.81.194.137; OUTFOX_SEARCH_USER_ID_NCOO=597036150.7305241; _ga=GA1.2.1037696354.1529850002; DICT_UGC=be3af0da19b5c5e6aa4e17bd8d90b28a|; JSESSIONID=abcoBYcCnz7WD71o-z7vw; ___rl__test__cookies=1535377134467',
            'Host': 'fanyi.youdao.com',
            'Origin': 'http://fanyi.youdao.com/',
            'Referer': 'http://fanyi.youdao.com/',
        }

    def trans(self, word):
        client = 'fanyideskweb'
        D = 'n%A-rKaT5fb[Gy?;N5@Tj'
        ts = str(time.time() * 1000)
        bv = 'e9a540d982d8c0b1c2267cb741a05f8f'
        salt = str(time.time()) + '1'
        # salt = ts + parseInt(10 * Math.random(), 10)
        # hashlib.md5: MD5加密, 接收一个二进制参数
        md5_obj = hashlib.md5((client + word + salt + D).encode())
        sign = md5_obj.hexdigest()

        # 拼接参数, 发送post请求, 获取响应数据
        data = {
            "i": word,
            "from": "AUTO",
            "to": "AUTO",
            "smartresult": "dict",
            "client": client,
            "salt": salt,
            "sign": sign,
            "ts": ts,
            "bv": bv,
            "doctype": "json",
            "version": "2.1",
            "keyfrom": "fanyi.web",
            "action": "FY_BY_CLICKBUTTION",
            # "typoResult": "false"
        }

        response = requests.post(self.url, data=data, headers=self.headers)
        content = response.content.decode()
        # print('---', content)

        translate_list = json.loads(content).get('translateResult')
        res = ''
        for trans_list in translate_list:
            for trans_data in trans_list:
                # print(trans_data.get('tgt'))
                res += trans_data.get('tgt') + '\n'
                # res += trans_data.get('tgt') + ' '

        print('res:', res)
        return res


if __name__ == '__main__':
    word = "Sunshine no sense to me\n Internet no sense to me\n Cigarette no sense to me"
    # word = "Всё качественно и быстро!"
    # word = "Did you know there's a ? World Emoji Day❓ ??????Well guess what ?, today's the day❗??  #17Jul  ?\n\nDownload our Telegram stickers from our official groups to celebrate! ?? TG Groups: https://t.co/FKUOdodHAm\n\nWhat's your favorite emoji? Comment below"
    trans = YouDaoTrans()
    trans.trans(word)

参数破解过程:

 

 

2019-07-21

------ END ------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值