鱼C论坛

 找回密码
 立即注册
查看: 1999|回复: 1

[技术交流] Python 爬取百度翻译

[复制链接]
发表于 2020-3-18 13:20:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Python 爬取百度翻译


先在这里注册一个通用翻译 API :

http://api.fanyi.baidu.com/product/11

1.png

可选择标准版或高级版(高级版需实名认证才能用,而且高级版每月只能免费翻译 200 万字符)

然后使用以下函数:
from random import randint
from hashlib import md5
from urllib.parse import quote
from requests import get
from json import loads


def baidu_translate(text: str, app_id: str, secret_key: str, from_: str = 'zh', to: str = 'en') -> str:
    """
    爬取百度翻译

    参数
    ----------
    text: str
        待翻译的文本
    app_id: str
        App id
    secret_key: str
        Secret key
    from_: str
        待翻译文本的语言
    to: str
        翻译成的语言

    返回值
    -------
    翻译后的文本,如果出错则返回空字符串
    """
    try:
        salt = str(randint(32768, 65536))
        sign = md5((app_id + text + salt + secret_key).encode()).hexdigest()
        content = get('http://api.fanyi.baidu.com/api/trans/vip/translate' + '?appid=' + app_id +
                      '&q=' + quote(text) + '&from=' + from_ + '&to=' + to + '&salt=' + str(salt) +
                      '&sign=' + sign).content.decode()
        data = loads(content)
        list1 = data['trans_result']
        res = []
        for i in list1:
            res.append(i["dst"])
        return '\n'.join(res)
    except Exception:    # 出错时返回空字符串
        return ''

例如:
print(baidu_translate("你好\n我叫 zltzlt", "你的 App ID", "你的 Secret Key"))

结果:
Hello
My name is zltzlt

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-21 13:51:12 | 显示全部楼层
这一定是一个好宝贝……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 14:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表