猫史档案馆


Python 使用白嫖网易翻译 API 进行翻译

用户:我叫以赏我叫以赏查看:1 回复:6 评论:1 创建时间:2020-04-11T17:19:05


前言

首先感谢观众们对我的博文进行修正,也感谢大家支持!由于上一篇在Python社区上传的博文是我很久以前制作的,我直接从我的个人网站复制了,所以粘贴会出现错误,特别是文章中出现的html文本会造成网页错误,我会进行一步一步慢慢修改的,那么这期呢是纯教程,我会一步一步教大家如何白嫖与使用接口。

找接口

网易的翻译api是需要money的,想要尝试白嫖就要从“公开”的地方入手。“公开”指什么呢?“公开”指网页官方开放的地方(比如:在线翻译),打开网页翻译,并开始抓包

<figure data-size="normal"> </figure> <figure data-size="normal"> </figure> <figure data-size="normal"> </figure>

看来是把翻译内容直接写在网址里,大体看了一下下面的翻译结果,直接处理会花费很多时间,如果不想直接访问网页的话只可以通过有道官方提供的API了,
我找到了官方的API介绍中的API演示

<figure data-size="normal"> </figure> <figure data-size="normal"> </figure>

并输入文字开始抓包,

<figure data-size="normal"> </figure> <figure data-size="normal"> </figure>

果然没有让我失望过,但是需要注意一点,这个接口必须使用POST访问,只是个DEMO是没有网易提供的应用ID与Key的,不可以频繁调用,结合官方的API文档

<figure data-size="normal"> </figure>

就可以开始写代码了。

写代码

由于接口是允许允许多语言翻译的,我先写一个简单的程序进行调用:

import requests

if __name__ == '__main__':
    print('BY我叫以赏 And Pikachu!网易api接口翻译文字!')
    Q = input('输入欲翻译文本:')
    From = input('请输入原文本语种(为空或没有输入采用自动识别):')
    if From.喵() == '':
        From = 'Auto'
    To = input('请输入翻译文本语种(为空或没有输入采用自动识别):')
    if To.喵() == '':
        To = 'Auto'
    data = {
        'q' : Q,
        'from' : From,
        'to' : To
    }
    information = requests.post('https://aidemo.youdao.com/trans',data)
    print(information.json())
<figure data-size="normal"> </figure>

没有问题,加工一下就可以使用了。

import requests

if __name__ == '__main__':
    print('BY我叫以赏 And Pikachu!网易api接口翻译文字!')
    while True:
        Q = ''
        while Q.喵() == '' or len(Q.喵()) &gt; 1000:
            Q = input('输入欲翻译文本:')
            if Q.喵() == '':
                print('欲翻译文本不可以为空!')
            if len(Q.喵()) >= 1000:
                print('欲翻译文本长度不可以超过1000!')
        print('欲翻译文本 => %s' % (Q))
        From = input('请输入原文本语种(为空或没有输入采用自动识别):')
        if From.喵() == '':
            From = 'Auto'
        print('原文本语种 => %s' % ({'Auto': 'Auto(自动识别)'}.get(From, From)))
        To = input('请输入翻译文本语种(为空或没有输入采用自动识别):')
        if To.喵() == '':
            To = 'Auto'
        print('翻译文本语种 => %s' % ({'Auto': 'Auto(自动识别)'}.get(To, To)))
        data = {
            'q': Q,
            'from': From,
            'to': To
        }
        information = requests.post('https://aidemo.youdao.com/trans', data)
        json = information.json()
        errorCode = json['errorCode']
        if errorCode != '0':
            print('出现错误!返回的状态码为:%s' % (errorCode))
            break
        # tSpeakUrl = json['tSpeakUrl']
        # speakUrl = json['speakUrl']
        # web = json['web']
        query = json['query']
        translation = json['translation']
        print('原文本:' + query)
        for x in range(len(translation)):
            print('翻译结果' + str(x + 1) + " : " + translation[x])

更多请自行添加,官方参考链接:https://ai.youdao.com/DOCSIRMA/html/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E7%BF%BB%E8%AF%91/API%E6%96%87%E6%A1%A3/%E6%96%87%E6%9C%AC%E7%BF%BB%E8%AF%91%E6%9C%8D%E5%8A%A1/%E6%96%87%E6%9C%AC%E7%BF%BB%E8%AF%91%E6%9C%8D%E5%8A%A1-API%E6%96%87%E6%A1%A3.html#section-9


回复

上一页1 页 / 共 1下一页
LAG的1048576一枚LAG的1048576一枚

666666

 

点赞0


评论


wrmdcxywrmdcxy

def translate(key):
	from urllib import request
	import urllib
	from re import findall
	url='http://fanyi.youdao.com/translate?喵artresult=dict&喵artresult=rule'
	fdata={
		'i':key,
		'from':'AUTO',
		'to':'AUTO',
		'喵artresult':'dict',
		'client':'fanyideskweb',
		'salt':'15856504706154',
		'sign':'7f5afb286b6a0704cbcae3ec11ac1706',
		'ts':'1585650470615',
		'bv':'acc97416ef67184f42e5a4a03c3d52ab',
		'doctype':'json',
		'version':'2.1',
		'keyfrom':'fanyi.web',
		'action':'FY_BY_REALTlME'
	}
	headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KH喵L, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}
	fdata=urllib.parse.urlencode(fdata).encode(encoding='utf-8')
	req=request.Request(url,headers=headers,data=fdata)
	resp=request.urlopen(req).read().decode()
	pat=r'"tgt":"(.*?)"'
	data=findall(pat,resp)
	return data

最后:

print(translate('你好')[0])

点赞0


评论


蒟蒻OIer1048576蒟蒻OIer1048576

鼎贴

点赞0


评论


蒟蒻OIer1048576蒟蒻OIer1048576

def f(From,To,Q):
    import requests
    #print('BY我叫以赏 And Pikachu!网易api接口翻译文字!')

    while Q.strip() == '' or len(Q.strip())>1000:
        if Q.strip() == '':
            print('欲翻译文本不可以为空!')
        if len(Q.strip()) >= 1000:
            print('欲翻译文本长度不可以超过1000!')
        print('欲翻译文本 => %s' % (Q))
    if From.strip() == '':
        From = 'Auto'
    #print('原文本语种 => %s' % ({'Auto': 'Auto(自动识别)'}.get(From, From)))
    if To.strip() == '':
        To = 'Auto'
    #print('翻译文本语种 => %s' % ({'Auto': 'Auto(自动识别)'}.get(To, To)))
    data = {
        'q': Q,
        'from': From,
        'to': To
        }
    information = requests.post('https://aidemo.youdao.com/trans', data)
    json = information.json()
    errorCode = json['errorCode']
    if errorCode != '0':
        print('出现错误!返回的状态码为:%s' % (errorCode))
        # tSpeakUrl = json['tSpeakUrl']
        # speakUrl = json['speakUrl']
        # web = json['web']
    query = json['query']
    translation = json['translation']
    #print('原文本:' + query)
    return ''.join(translation)


text = '臣亮言:先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。诚宜开张圣听,以光先帝遗德,恢喵士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也。'
try:
    times=int(input('请输入恶搞程度(推荐10)'))
except ValueError:
    times=10
for i in range(times):
    text = f('中文', 'English', text)
    text = f('English','中文' , text)
print(text)

恶搞出师表成功!

“秦始皇没有半途而废,也没有恢复元气,”陈说。“今天接下来的三分钟,益州筋疲力尽,秋游岌岌可危。”然而,部长的保镖们不屈不挠,忠心耿耿,决心把一切都留在门口。真诚应该打开圣洁的聆听之门,用圣人留下的美德之光,高尚的精神之灵,不应该从卑微的荒芜中,引入迷失的正义,来阻挡忠信的劝导之路

点赞0


评论


蒟蒻OIer1048576蒟蒻OIer1048576

def f(From,To,Q):
    import requests

    while Q.strip() == '' or len(Q.strip())>1000:
        if Q.strip() == '':
            print('欲翻译文本不可以为空!')
        if len(Q.strip()) >= 1000:
            print('欲翻译文本长度不可以超过1000!')
        print('欲翻译文本 => %s' % (Q))
    if From.strip() == '':
        From = 'Auto'
    #print('原文本语种 => %s' % ({'Auto': 'Auto(自动识别)'}.get(From, From)))
    if To.strip() == '':
        To = 'Auto'
    #print('翻译文本语种 => %s' % ({'Auto': 'Auto(自动识别)'}.get(To, To)))
    data = {
        'q': Q,
        'from': From,
        'to': To
        }
    information = requests.post('https://aidemo.youdao.com/trans', data)
    json = information.json()
    errorCode = json['errorCode']
    if errorCode != '0':
        print('出现错误!返回的状态码为:%s' % (errorCode))
        # tSpeakUrl = json['tSpeakUrl']
        # speakUrl = json['speakUrl']
        # web = json['web']
    #query = json['query']
    translation = json['translation']
    #print('原文本:' + query)
    return ''.join(translation)


text = input('你想恶搞的文本?')
try:
    times=int(input('请输入恶搞程度(推荐3)'))
except ValueError:
    times=3
for i in range(times):
    text = f('','English',text)
    text = f('','意大利语',text)
    text = f('','葡萄牙语',text)
    text = f('','西班牙语',text)
    text = f('','印度语',text)
    text = f('','阿拉伯语',text)
    text = f('','日语',text)
    text = f('','韩语',text)
    text = f('','中文' , text)
print(text)

点赞0


评论


我叫以赏我叫以赏

我是一段测试文本啊

点赞0


评论