bsc 发表于 2020-1-24 12:10:10

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}而没有翻译结果。。。。。。
请问这是为什么啊?

EthanHsiung 发表于 2020-1-26 13:04:00

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]
查看完整版本: Python实战的翻译问题