前阵子爬了Steam(游戏网站),选择了中文显示然后爬取数据,但还是有一些抓取下来的数据是英文的,
所以顺道偷了一个有道翻译的接口,用来对抓取来的数据,如果的话是英文则做翻译。
下面讲讲调用有道翻译接口的过程。
1.打开有道翻译
2.打开F12
3.在输入框中输入Hello
4.观察网络,看到有一个post请求里的 i 参数跟我输入的字符一致,以此得出 i 的值就是我需要翻译的值。
5.使用requests.post方法,访问接口地址,并把上图看到的参数放进一请求里提交,运行看看。
############################################
#coding = utf-8
import requests
url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
payload = {'i':'hello',
'action':'FY_BY_CLICKBUTTION',
'bv':'e2a78ed30c66e16a857c5b6486a1d326',
'client':'fanyideskweb',
'doctype':'json',
'from':'AUTO',
'keyfrom':'fanyi.web',
'salt':'15532627491296',
'sign':'ee5b85b35c221d9be7437297600c66df',
'smartresult':'dict',
'to':'AUTO',
'ts':'1553262749129',
'typoResult':'false',
'version':'2.1'
}
r = requests.post(url,data=payload) #post请求,并提交表单数据
trans_json = r.json() #由F12能看出返回的数据是json格式,但python不知道,所以这边定义了返回来的数据为json格式,方便之后操作
print(trans_json) #打印看返回来的数据对不对
############################################
发现返回结果是 {‘errorCode’: 50}
一开始以为是没加header的关系,但是经过检验,发现可能是有道为了防止接口被调用,在url做了手脚,
正确的接口地址应该是:http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule
也就是吧_o去掉即可,我们看下运行结果。
{'elapsedTime': 1,'errorCode': 0,'type': 'EN2ZH_CN','translateResult':[[{'src':'hello','tgt':'你好'}]]}
6.取得了正确的返回后,就结果提取需要的部分,可以看到src返回英文,tgt返回中文,对这两个key的value做提取,以下代码体现了对json对象取值的方法,一层一层往下找到你需要的字段的值。
====
trans_tgt = trans_json['translateResult'][0][0]['tgt'] #中文
trans_src = trans_json['translateResult'][0][0]['src'] #英文
====
7.代码最后做一个判断,如果输入的字符串是中文,则返回英文结果,如果输入的是英文,则返回中文结果
完整源代码:
############################################
import requests
def Trans(str):
url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
payload = {'i':str,
'action':'FY_BY_CLICKBUTTION',
'bv':'e2a78ed30c66e16a857c5b6486a1d326',
'client':'fanyideskweb',
'doctype':'json',
'from':'AUTO',
'keyfrom':'fanyi.web',
'salt':'15532627491296',
'sign':'ee5b85b35c221d9be7437297600c66df',
'smartresult':'dict',
'to':'AUTO',
'ts':'1553262749129',
'typoResult':'false',
'version':'2.1'
}
r = requests.post(url,data=payload)
trans_json = r.json() #返回结果定义为json
trans_tgt = trans_json['translateResult'][0][0]['tgt'] #中文
trans_src = trans_json['translateResult'][0][0]['src'] #英文
if str == trans_tgt: #如果str为中文,则返回英文,反之
return trans_src
else:
return trans_tgt
############################################
接下来就可以把这个接口结合程序中需要翻译的地方来使用啦……
https://blog.csdn.net/weixin_42852210/article/details/88768649
所以顺道偷了一个有道翻译的接口,用来对抓取来的数据,如果的话是英文则做翻译。
下面讲讲调用有道翻译接口的过程。
1.打开有道翻译
2.打开F12
3.在输入框中输入Hello
4.观察网络,看到有一个post请求里的 i 参数跟我输入的字符一致,以此得出 i 的值就是我需要翻译的值。
5.使用requests.post方法,访问接口地址,并把上图看到的参数放进一请求里提交,运行看看。
############################################
#coding = utf-8
import requests
url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
payload = {'i':'hello',
'action':'FY_BY_CLICKBUTTION',
'bv':'e2a78ed30c66e16a857c5b6486a1d326',
'client':'fanyideskweb',
'doctype':'json',
'from':'AUTO',
'keyfrom':'fanyi.web',
'salt':'15532627491296',
'sign':'ee5b85b35c221d9be7437297600c66df',
'smartresult':'dict',
'to':'AUTO',
'ts':'1553262749129',
'typoResult':'false',
'version':'2.1'
}
r = requests.post(url,data=payload) #post请求,并提交表单数据
trans_json = r.json() #由F12能看出返回的数据是json格式,但python不知道,所以这边定义了返回来的数据为json格式,方便之后操作
print(trans_json) #打印看返回来的数据对不对
############################################
发现返回结果是 {‘errorCode’: 50}
一开始以为是没加header的关系,但是经过检验,发现可能是有道为了防止接口被调用,在url做了手脚,
正确的接口地址应该是:http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule
也就是吧_o去掉即可,我们看下运行结果。
{'elapsedTime': 1,'errorCode': 0,'type': 'EN2ZH_CN','translateResult':[[{'src':'hello','tgt':'你好'}]]}
6.取得了正确的返回后,就结果提取需要的部分,可以看到src返回英文,tgt返回中文,对这两个key的value做提取,以下代码体现了对json对象取值的方法,一层一层往下找到你需要的字段的值。
====
trans_tgt = trans_json['translateResult'][0][0]['tgt'] #中文
trans_src = trans_json['translateResult'][0][0]['src'] #英文
====
7.代码最后做一个判断,如果输入的字符串是中文,则返回英文结果,如果输入的是英文,则返回中文结果
完整源代码:
############################################
import requests
def Trans(str):
url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
payload = {'i':str,
'action':'FY_BY_CLICKBUTTION',
'bv':'e2a78ed30c66e16a857c5b6486a1d326',
'client':'fanyideskweb',
'doctype':'json',
'from':'AUTO',
'keyfrom':'fanyi.web',
'salt':'15532627491296',
'sign':'ee5b85b35c221d9be7437297600c66df',
'smartresult':'dict',
'to':'AUTO',
'ts':'1553262749129',
'typoResult':'false',
'version':'2.1'
}
r = requests.post(url,data=payload)
trans_json = r.json() #返回结果定义为json
trans_tgt = trans_json['translateResult'][0][0]['tgt'] #中文
trans_src = trans_json['translateResult'][0][0]['src'] #英文
if str == trans_tgt: #如果str为中文,则返回英文,反之
return trans_src
else:
return trans_tgt
############################################
接下来就可以把这个接口结合程序中需要翻译的地方来使用啦……
https://blog.csdn.net/weixin_42852210/article/details/88768649