鱼C论坛

 找回密码
 立即注册
查看: 1178|回复: 1

tkinter+教学爬取有道,实时显示卡顿及解析bug

[复制链接]
发表于 2021-12-2 16:03:47 | 显示全部楼层 |阅读模式

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

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

x
大佬们,谁能帮我看看如何修改,把入门爬取有道+按键后更新,十分卡顿,不知道从哪里入手。
报错的是网页解析的,感觉是输入汉字时候需要选择所以为空,但是纯拼音输入也不可。

  1. #! /usr/bin/env python
  2. #  -*- coding: utf-8 -*-
  3. #
  4. # GUI module generated by PAGE version 6.2
  5. #  in conjunction with Tcl version 8.6
  6. #    Nov 30, 2021 09:39:00 AM CST  platform: Windows NT
  7. from tkinter import *
  8. from tkinter.scrolledtext import *
  9. import urllib.request
  10. import urllib.parse
  11. import json

  12. #page生成UI
  13. top= Tk()
  14. top.geometry("600x333+660+210")
  15. top.minsize(152, 1)
  16. top.maxsize(4484, 1415)
  17. top.resizable(1,  1)
  18. top.title("有道翻译")
  19. top.configure(background="#d9d9d9")

  20. Button1 = Button()
  21. Button1.place(relx=0.417, rely=0.465, height=33, width=63)
  22. Button1.configure(activebackground="#ececec")
  23. Button1.configure(activeforeground="#000000")
  24. Button1.configure(background="#d9d9d9")
  25. Button1.configure(disabledforeground="#a3a3a3")
  26. Button1.configure(foreground="#000000")
  27. Button1.configure(highlightbackground="#d9d9d9")
  28. Button1.configure(highlightcolor="black")
  29. Button1.configure(pady="0")
  30. Button1.configure(text="翻译",command = lambda:function())

  31. Scrolledtext1 = ScrolledText()
  32. Scrolledtext1.place(relx=0.05, rely=0.066, relheight=0.327
  33.         , relwidth=0.898)
  34. Scrolledtext1.configure(background="white")
  35. Scrolledtext1.configure(font="TkTextFont")
  36. Scrolledtext1.configure(foreground="black")
  37. Scrolledtext1.configure(highlightbackground="#d9d9d9")
  38. Scrolledtext1.configure(highlightcolor="black")
  39. Scrolledtext1.configure(insertbackground="black")
  40. Scrolledtext1.configure(insertborderwidth="3")
  41. Scrolledtext1.configure(selectbackground="blue")
  42. Scrolledtext1.configure(selectforeground="white")
  43. Scrolledtext1.configure(wrap="none")

  44. Scrolledtext2 = ScrolledText()
  45. Scrolledtext2.place(relx=0.05, rely=0.631, relheight=0.318
  46.         , relwidth=0.898)
  47. Scrolledtext2.configure(background="white")
  48. Scrolledtext2.configure(font="TkTextFont")
  49. Scrolledtext2.configure(foreground="black")
  50. Scrolledtext2.configure(highlightbackground="#d9d9d9")
  51. Scrolledtext2.configure(highlightcolor="black")
  52. Scrolledtext2.configure(insertbackground="black")
  53. Scrolledtext2.configure(insertborderwidth="3")
  54. Scrolledtext2.configure(selectbackground="blue")
  55. Scrolledtext2.configure(selectforeground="white")
  56. Scrolledtext2.configure(wrap="none")

  57. #button点击后操作
  58. def function():
  59.     input_word = Scrolledtext1.get(1.0,END)
  60.     print(input_word)
  61.     #将输入化为字符串'\n'连接
  62.     av = '\n'.join([i for i in input_word.splitlines() if i != ''])
  63.     print(av)

  64.     Scrolledtext2.insert("insert", fanyi(av))

  65. #有道爬虫
  66. def fanyi(content):
  67.     global sum
  68.     url = 'https://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'

  69.     head={}
  70.     head['User-Agent']='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36'

  71.     data = {}
  72.     data['i'] =content
  73.     data['from'] = 'AUTO'
  74.     data['to'] = 'AUTO'
  75.     data['smartresult'] = 'dict'
  76.     data['client'] ='fanyideskweb'
  77.     data['salt'] = '16327269692950'
  78.     data['sign'] = '2381935fe41c5ed6773371fde2a3cff1'
  79.     data['lts'] = '1632726969295'
  80.     data['bv'] = '5f70acd84d315e3a3e7e05f2a4744dfa'
  81.     data['doctype'] = 'json'
  82.     data['version'] = '2.1'
  83.     data['keyfrom'] = 'fanyi.web'
  84.     data['action'] = 'FY_BY_CLICKBUTTION'

  85.     data = urllib.parse.urlencode(data).encode('utf8')
  86.     req = urllib.request.Request(url,data,head)
  87.     response = urllib.request.urlopen(req)
  88.     html = response.read().decode('utf8')

  89.     targets=json.loads(html)

  90.     results=targets['translateResult']
  91.     #爬取值为字典需要选择输出,每个results是一组对应词典,i可以去一层括号,再使用src可获取输入的字,tgt获取翻译后的字
  92.     sum = ''
  93.     for i in results:
  94.        sum = sum+i[0]['tgt']+'\n'

  95.     return sum
  96. top.mainloop()



复制代码
IMF4XYKA0EP2MI@LLJ45X54.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-12-2 16:57:11 | 显示全部楼层
这代码我这跑正常的,除了旧结果没有被清除,其他都正常的。
动画4.gif
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-30 23:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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