{"errorCode":50} 的解决办法
本帖最后由 skafjdsdhfh 于 2017-9-18 20:52 编辑大家好,之前重复下载猫咪图片和有道翻译的时候出现{"errorCode":50}。
今天在某网里面看到有人说只要去除url里面的_o字段,就可以解决问题。
试了一下可以使用,高兴的振臂欢呼。
基于大部分人都看过视频中老师的教学代码,所以下面贴出来的代码大家可以选择性忽略
import urllib.request
import urllib.parse
url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule&sessionFrom='
data = {'i':'有道',
'from':'AUTO',
'to':'AUTO',
'smartresult':'dict',
'client':'fanyideskweb',
'salt':'1505653077725',
'sign':'467d88b4cdc9c6adca72855020b6a1e8',
'doctype':'json',
'version':'2.1',
'keyfrom':'fanyi.web',
'action':'FY_BY_CLICKBUTTION',
'typoResult':'true'}
data = urllib.parse.urlencode(data).encode('utf-8')
r = urllib.request.urlopen(url,data)
html = r.read().decode('utf-8')
print(html)
以上只是把url中的_o给删除就可以重复老师的结果了。
我的问题是:1、为什么这样就可以?
2、字典信息和头部信息的内容太多,可以使用老师之前介绍pickle的方式吗?
~~~~~20:48 updata~~~~~~
太过于得意忘形。照老师接下来的代码再次出错。无论翻译什么词语都只会返回“内容”两个字!!!
import urllib.request
import urllib.parse
import json
content = input('请输入需要翻译的词语:')
url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&sessionFrom='
data = {'i':'content',
'from':'AUTO',
'to':'AUTO',
'smartresult':'dict',
'client':'fanyideskweb',
'salt':'1505653077725',
'sign':'467d88b4cdc9c6adca72855020b6a1e8',
'doctype':'json',
'version':'2.1',
'keyfrom':'fanyi.web',
'action':'FY_BY_CLICKBUTTION',
'typoResult':'true'}
data = urllib.parse.urlencode(data).encode('utf-8')
r = urllib.request.urlopen(url,data)
html = r.read().decode('utf-8')
target = json.loads(html)
print('翻译结果是:%s'%(target['translateResult']['tgt']))
没有报错。不知道怎么办。我再也不敢随便高兴了。(′°̥̥̥̥̥̥̥̥ω°̥̥̥̥̥̥̥̥`)
http://bbs.fishc.com/thread-93823-1-1.html 本帖最后由 skafjdsdhfh 于 2017-9-18 21:37 编辑
新手·ing 发表于 2017-9-18 21:27
http://bbs.fishc.com/thread-93823-1-1.html
。。。。。是可以使用没有错。
鬼先生写的代码里面import了一个hashlib。我不知道那是什么?
而且:m = hashlib.md5()
d = '翻译'
u = 'fanyideskweb'
f = str(int(time.time()*1000))
c = "rY0D^0'nM0}g5Mm1z%1G4"
m.update((u + d + f + c).encode('utf-8'))
这一段是干什么用的?请问我要不要去翻文库啊?
谢谢告知,(如果fishC中有hashlib的中文解释,也麻烦告诉我一下,全篇英文就算现在看着还是害怕啊!) skafjdsdhfh 发表于 2017-9-18 21:35
。。。。。是可以使用没有错。
鬼先生写的代码里面import了一个hashlib。我不知道那是什么?
{:10_312:}说真的不也不懂
这个,,,一个Python内置库 新手·ing 发表于 2017-9-18 21:36
说真的不也不懂
这个,,,一个Python内置库
那么我还是硬着头皮去翻文档好了,谢谢你! skafjdsdhfh 发表于 2017-9-18 21:38
那么我还是硬着头皮去翻文档好了,谢谢你!
加油 本帖最后由 何处是天涯 于 2017-12-1 18:01 编辑
import urllib.request
import urllib.parse
import json
content = input('请输入需要翻译的词语:')
url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&sessionFrom='
data = {'i':content,
'from':'AUTO',
'to':'AUTO',
'smartresult':'dict',
'client':'fanyideskweb',
'salt':'1505653077725',
'sign':'467d88b4cdc9c6adca72855020b6a1e8',
'doctype':'json',
'version':'2.1',
'keyfrom':'fanyi.web',
'action':'FY_BY_CLICKBUTTION',
'typoResult':'true'
}
data = urllib.parse.urlencode(data).encode('utf-8')
r = urllib.request.urlopen(url,data)
html = r.read().decode('utf-8')
target = json.loads(html)
print('翻译结果是:%s'%(target['translateResult']['tgt']))
解决方法总结起来就两点:
第一种只是把url中的_o给删除就可以,需要注意的是在设置外部输入变量content时,在字典中的i键的值content应该不要单引号。
第二种是《用Python破解有道翻译反爬虫机制》里所说的导入hashlib模块和random产生md5时间戳 何处是天涯 发表于 2017-12-1 18:00
import urllib.request
import urllib.parse
import json
楼主,问题已经解决 何处是天涯 发表于 2017-12-1 18:00
import urllib.request
import urllib.parse
import json
对不起,这么长时间才回复你。我之前已经设置过最佳答案了,想把最佳答案给你,但是搞不定,无论如何都谢谢你。 为什么去掉_o就可以。。。{:5_99:} 这个_o?有人解释一下吗。。另外我发现这个字典里其实光放进 i 和 doctype就可以、、别的不放也一样 我也想请问各位,那个"_o"是什么情况,麻烦知道的可否告知一下。
至于那个翻译内容不变的可能是这里“data['i'] = content”,里面的content是变量,如果用单引号就固定了值,变量才会根据每次的输入来判定翻译吧。。。 {'i':'content'这里的字典第一个元素的值是你翻译的值 不是字符串content呀 我也想请问各位,那个"_o"是什么情况,麻烦知道的可否告知一下。 http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule
带-o 的网址,复制的浏览器,显示:{"errorCode":50}
去掉-o就正常了..... 返回内容两个字,是因为,data['i'] = 'content',你去掉content的单引号就行了,不然的话,他就是对content进行翻译了 天哪,你们难道没有发现楼主这个显而易见的问题吗,他的content变量在data里加了单引号,这当然只能翻译出内容两个字了,因为一直传递的参数就是conten这个英文。。。。。。。。。。
正确代码在这里
import urllib.request
import urllib.parse
import json
url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
content=input('请输入你需要翻译的内容:')
data = {'i':content,
'from':'AUTO',
'to':'AUTO',
'smartresult':'dict',
'client':'fanyideskweb',
'salt':'1505653077725',
'sign':'467d88b4cdc9c6adca72855020b6a1e8',
'doctype':'json',
'version':'2.1',
'keyfrom':'fanyi.web',
'action':'FY_BY_CLICKBUTTION',
'typoResult':'true'}
data = urllib.parse.urlencode(data).encode('utf-8')
r = urllib.request.urlopen(url,data)
html = r.read().decode('utf-8')
target=json.loads(html)
print('翻译结果是:%s'%(target['translateResult']['tgt']))
何处是天涯 发表于 2017-12-1 18:07
解决方法总结起来就两点:
第一种只是把url中的_o给删除就可以,需要注意的是在设置外部输入变量content时 ...
额,刚才没仔细往下翻,您这是正解 ”您的请求来源非法,商业用途使用请关注有道翻译API官方网站\u201C有道智云“怎么办
页:
[1]
2