大马强 发表于 2020-10-31 01:10:34

有点问题想请教

把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']['tgt']

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

   
   

xiangjianshinan 发表于 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']['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)

xiangjianshinan 发表于 2020-10-31 06:00:20

这样可行?

大马强 发表于 2020-10-31 09:14:57

xiangjianshinan 发表于 2020-10-31 06:00
这样可行?

刚发完问题就想到了,可以用一个函数来搞{:10_279:},而且你那样也不太和我的要求{:10_277:}
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']['tgt']

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

   
   

xiangjianshinan 发表于 2020-11-2 00:36:06

大马强 发表于 2020-10-31 09:14
刚发完问题就想到了,可以用一个函数来搞,而且你那样也不太和我的要求

对,用短小精悍的函数来处理,也真是不错的主意。
页: [1]
查看完整版本: 有点问题想请教