Python实战的翻译问题
请问和小甲鱼上课一样的代码为什么得不出正确结果?这是我的代码:
import urllib.request
import urllib.parse
url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
data={}
data['i']='I love fishc.com!'
data['type']='AUTO'
data['doctype']= 'json'
data['xmlVersion']= '1.6'
data['keyfrom']='fanyi.web'
data['ue']='UTF-8'
data['typoResult']='true'
data = urllib.parse.urlencode(data).encode('utf-8')
response = urllib.request.urlopen(url,data)
html = response.read().decode('utf-8')
print(html)
但是输出的结果都是{"errorCode":50}而没有翻译结果。。。。。。
请问这是为什么啊? python爬取有道翻译出错 {‘errorcode’:50}
按照链接的方法,将在审查元素中获得的url中translate后面的_o去掉。
结果是{"type":"EN2ZH_CN","errorCode":30,"elapsedTime":0,"translateResult":[[{"src":"您的请求来源非法,商业用途使用请关注有道翻译API官方网站\u201C有道智云\u201D: http:\/\/ai.youdao.com","tgt":"您的请求来源非法,商业用途使用请关注有道翻译API官方网站\u201C有道智云\u201D: http:\/\/ai.youdao.com"}]]}
这是因为有道翻译加强了反爬虫的策略。小甲鱼当时的代码可以,现在受限制了。
以下方法亲测可行
# -*- coding:utf-8 -*-
import requests
string = str(input("请输入一段要翻译的文字:"))
data = {
'doctype': 'json',
'type': 'AUTO',
'i':string
}
url = "http://fanyi.youdao.com/translate"
r = requests.get(url,params=data)
result = r.json()
print(result['translateResult']['tgt'])
页:
[1]