鱼C论坛

 找回密码
 立即注册
查看: 1478|回复: 4

[已解决]有点问题想请教

[复制链接]
发表于 2020-10-31 01:10:34 | 显示全部楼层 |阅读模式
10鱼币
把data放回去就可以用了,但觉得这样感觉不美观,想改改,鱼油们有无好办法?
ps:前几天刚刚学了爬虫,想了好像可以和easygui结合一下,问题我都标注了
报错信息:'bytes' object does not support item assignment  /“bytes”对象不支持项分配
  
import easygui,urllib.request,sys,json

easygui.msgbox('使用马强翻译1.0(结果来源于有道翻译)')

url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
data={} #把这个放到外面的话,程序只能用一次,第二次就会报错
while True:
    #想保留这两行
    dat=easygui.enterbox('请输入:',title='马强翻译1.0')
    data['i']= dat

    #想把这些放到while的外面
    data['from']='AUTO'
    data['to']='AUTO'
    data['smartresult']='dict'
    data['client']='fanyideskweb'
    data['salt']='16038541804405'
    data['sign']='a0c52b875aa481825e8411c6d7b0f6b0'
    data['lts']='1603854180440'
    data['bv']='8269b35cc1594b7635631cdd3a301112'
    data['doctype']='json'
    data['version']='2.1'
    data['keyfrom']='fanyi.web'
    data['action']='FY_BY_REALTlME'
   
    data=urllib.parse.urlencode(data).encode('utf-8') #编码

    req=urllib.request.urlopen(url,data)
    html=req.read().decode('utf-8')

    target=json.loads(html)
    msg1='翻译的结果是:',target['translateResult'][0][0]['tgt']

    easygui.msgbox(msg1,title='翻译结果',ok_button='学废了!')
   
    if easygui.ccbox('是否要继续?'):
        pass
    else:
        sys.exit(0)
   

   
   
最佳答案
2020-10-31 01:10:35
import easygui,urllib.request,sys,json

easygui.msgbox('使用马强翻译1.0(结果来源于有道翻译)')

url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
data={'from': 'AUTO', 'to': 'AUTO', 'smartresult': 'dict', 'client': 'fanyideskweb', 'salt': '16038541804405', 'sign': 'a0c52b875aa481825e8411c6d7b0f6b0', 'lts': '1603854180440', 'bv': '8269b35cc1594b7635631cdd3a301112', 'doctype': 'json', 'version': '2.1', 'keyfrom': 'fanyi.web', 'action': 'FY_BY_REALTlME'} #把这个放到外面的话,程序只能用一次,第二次就会报错
while True:
    #想保留这两行
    dat=easygui.enterbox('请输入:',title='马强翻译1.0')
    data['i']= dat
   
    data=urllib.parse.urlencode(data).encode('utf-8') #编码

    req=urllib.request.urlopen(url,data)
    html=req.read().decode('utf-8')

    target=json.loads(html)
    msg1='翻译的结果是:',target['translateResult'][0][0]['tgt']

    easygui.msgbox(msg1,title='翻译结果',ok_button='学废了!')
   
    if easygui.ccbox('是否要继续?'):
       data = {'from': 'AUTO', 'to': 'AUTO', 'smartresult': 'dict', 'client': 'fanyideskweb', 'salt': '16038541804405', 'sign': 'a0c52b875aa481825e8411c6d7b0f6b0', 'lts': '1603854180440', 'bv': '8269b35cc1594b7635631cdd3a301112', 'doctype': 'json', 'version': '2.1', 'keyfrom': 'fanyi.web', 'action': 'FY_BY_REALTlME'}
        pass
    else:
        sys.exit(0)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-31 01:10:35 | 显示全部楼层    本楼为最佳答案   
import easygui,urllib.request,sys,json

easygui.msgbox('使用马强翻译1.0(结果来源于有道翻译)')

url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
data={'from': 'AUTO', 'to': 'AUTO', 'smartresult': 'dict', 'client': 'fanyideskweb', 'salt': '16038541804405', 'sign': 'a0c52b875aa481825e8411c6d7b0f6b0', 'lts': '1603854180440', 'bv': '8269b35cc1594b7635631cdd3a301112', 'doctype': 'json', 'version': '2.1', 'keyfrom': 'fanyi.web', 'action': 'FY_BY_REALTlME'} #把这个放到外面的话,程序只能用一次,第二次就会报错
while True:
    #想保留这两行
    dat=easygui.enterbox('请输入:',title='马强翻译1.0')
    data['i']= dat
   
    data=urllib.parse.urlencode(data).encode('utf-8') #编码

    req=urllib.request.urlopen(url,data)
    html=req.read().decode('utf-8')

    target=json.loads(html)
    msg1='翻译的结果是:',target['translateResult'][0][0]['tgt']

    easygui.msgbox(msg1,title='翻译结果',ok_button='学废了!')
   
    if easygui.ccbox('是否要继续?'):
       data = {'from': 'AUTO', 'to': 'AUTO', 'smartresult': 'dict', 'client': 'fanyideskweb', 'salt': '16038541804405', 'sign': 'a0c52b875aa481825e8411c6d7b0f6b0', 'lts': '1603854180440', 'bv': '8269b35cc1594b7635631cdd3a301112', 'doctype': 'json', 'version': '2.1', 'keyfrom': 'fanyi.web', 'action': 'FY_BY_REALTlME'}
        pass
    else:
        sys.exit(0)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-31 06:00:20 | 显示全部楼层
这样可行?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-10-31 09:14:57 | 显示全部楼层

刚发完问题就想到了,可以用一个函数来搞,而且你那样也不太和我的要求
import easygui,urllib.request,sys,json

easygui.msgbox('使用马强翻译1.0(结果来源于有道翻译)')

def mq():
    data={} 
    dat=easygui.enterbox('请输入:',title='马强翻译1.0')
    data['i']= dat
    data['from']='AUTO'
    data['to']='AUTO'
    data['smartresult']='dict'
    data['client']='fanyideskweb'
    data['salt']='16038541804405'
    data['sign']='a0c52b875aa481825e8411c6d7b0f6b0'
    data['lts']='1603854180440'
    data['bv']='8269b35cc1594b7635631cdd3a301112'
    data['doctype']='json'
    data['version']='2.1'
    data['keyfrom']='fanyi.web'
    data['action']='FY_BY_REALTlME'
    return data
    
url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'

while True:
    data=mq()
    data=urllib.parse.urlencode(data).encode('utf-8') #编码
    
    req=urllib.request.urlopen(url,data)
    html=req.read().decode('utf-8')

    target=json.loads(html)
    msg1='翻译的结果是:',target['translateResult'][0][0]['tgt']

    easygui.msgbox(msg1,title='翻译结果',ok_button='学废了!')
    
    if easygui.ccbox('是否要继续?'):
        pass
    else:
        sys.exit(0)
    

    
    
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-2 00:36:06 | 显示全部楼层
大马强 发表于 2020-10-31 09:14
刚发完问题就想到了,可以用一个函数来搞,而且你那样也不太和我的要求

对,用短小精悍的函数来处理,也真是不错的主意。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-17 23:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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