鱼C论坛

 找回密码
 立即注册
查看: 4261|回复: 6

[已解决]关于urllib模块运行问题

[复制链接]
发表于 2017-5-5 15:49:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
# -*- coding:utf-8 -*-
import urllib.request
import urllib.parse
import json
data='''i:爱情
from:AUTO
to:AUTO
smartresult:dict
client:fanyideskweb
salt:1493968599235
sign:bb13dce52ebe3879e98bebf98afed439
doctype:json
version:2.1
keyfrom:fanyi.web
action:FY_BY_ENTER
typoResult:true'''
a=data.split('\n')
b={}
for erch in a:
    c=erch.split(':')
    b[c[0]]=c[1]

data=b
data['i']=input('请输入要翻译的内容:')
data=urllib.parse.urlencode(data).encode('utf-8')
url='http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule&sessionFrom=null'
response=urllib.request.urlopen(url)
html=response.read().decode('utf-8')
print(html)

上面是我的代码

>>>
请输入要翻译的内容:hello
{"errorCode":50}

这是运行结果,搞不明白出了什么问题,请教大神了
最佳答案
2017-5-5 23:09:18
本帖最后由 lumber2388779 于 2017-5-6 00:41 编辑

http://fanyi.youdao.com/openapi?path=data-mode
你的key有错误的
50 - 无效的key
仔细查了下
发现你的
url='http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule&sessionFrom=null'
改成就可以了
url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=null'

这个应该是现在有道词典自己做了保护导致这个检查出来跟实际有出入
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-5-5 17:44:11 | 显示全部楼层
有道好像有反爬虫机制,要加上headers属性伪装成浏览器
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-5 19:12:26 | 显示全部楼层
新房客 发表于 2017-5-5 17:44
有道好像有反爬虫机制,要加上headers属性伪装成浏览器

#!/usr/bin/python
#-*- coding:utf-8 -*-
import urllib.request
import urllib.parse
url='http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule&sessionFrom=null'
head={'Connection':'keep-alive','Referer':'http://fanyi.youdao.com/',
'User-Agent':'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1'}

a='''i:爱情
from:AUTO
to:AUTO
smartresult:dict
client:fanyideskweb
salt:1493980359397
sign:30ebd3645a6256a0fb9d48ab73041355
doctype:json
version:2.1
keyfrom:fanyi.web
action:FY_BY_CLICKBUTTON
typoResult:true'''
      
b=a.split('\n')
data={}
for each in b:
        c=each.split(':')
        data[c[0]]=c[1]
data['i']=input('请输入要翻译的内容:')

data=urllib.parse.urlencode(data).encode('utf-8')  #将date转化为utf-8格式

req=urllib.request.Request(url,data=data,headers=head)

response=urllib.request.urlopen(req)

html = response.read().decode('utf-8')

print(html)




这是我加了以后的代码,结果还是一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-5 19:52:36 | 显示全部楼层
chyiso 发表于 2017-5-5 19:12
#!/usr/bin/python
#-*- coding:utf-8 -*-
import urllib.request

response=urllib.request.urlopen(url,data)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-5 20:52:10 | 显示全部楼层
我觉得是你的地址有误
你的地址:url='http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule&sessionFrom=null'
爬取用的地址:url="http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=null"
我自己也不知道为什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-5 23:02:17 | 显示全部楼层
可参考这个帖子,希望能帮到你
http://bbs.fishc.com/forum.php?m ... p;page=1#pid2877875
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-5 23:09:18 | 显示全部楼层    本楼为最佳答案   
本帖最后由 lumber2388779 于 2017-5-6 00:41 编辑

http://fanyi.youdao.com/openapi?path=data-mode
你的key有错误的
50 - 无效的key
仔细查了下
发现你的
url='http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule&sessionFrom=null'
改成就可以了
url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=null'

这个应该是现在有道词典自己做了保护导致这个检查出来跟实际有出入
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-19 04:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表