多放香菜 发表于 2021-12-2 16:03:47

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

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

#! /usr/bin/env python
#-*- coding: utf-8 -*-
#
# GUI module generated by PAGE version 6.2
#in conjunction with Tcl version 8.6
#    Nov 30, 2021 09:39:00 AM CSTplatform: Windows NT
from tkinter import *
from tkinter.scrolledtext import *
import urllib.request
import urllib.parse
import json

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

Button1 = Button()
Button1.place(relx=0.417, rely=0.465, height=33, width=63)
Button1.configure(activebackground="#ececec")
Button1.configure(activeforeground="#000000")
Button1.configure(background="#d9d9d9")
Button1.configure(disabledforeground="#a3a3a3")
Button1.configure(foreground="#000000")
Button1.configure(highlightbackground="#d9d9d9")
Button1.configure(highlightcolor="black")
Button1.configure(pady="0")
Button1.configure(text="翻译",command = lambda:function())

Scrolledtext1 = ScrolledText()
Scrolledtext1.place(relx=0.05, rely=0.066, relheight=0.327
      , relwidth=0.898)
Scrolledtext1.configure(background="white")
Scrolledtext1.configure(font="TkTextFont")
Scrolledtext1.configure(foreground="black")
Scrolledtext1.configure(highlightbackground="#d9d9d9")
Scrolledtext1.configure(highlightcolor="black")
Scrolledtext1.configure(insertbackground="black")
Scrolledtext1.configure(insertborderwidth="3")
Scrolledtext1.configure(selectbackground="blue")
Scrolledtext1.configure(selectforeground="white")
Scrolledtext1.configure(wrap="none")

Scrolledtext2 = ScrolledText()
Scrolledtext2.place(relx=0.05, rely=0.631, relheight=0.318
      , relwidth=0.898)
Scrolledtext2.configure(background="white")
Scrolledtext2.configure(font="TkTextFont")
Scrolledtext2.configure(foreground="black")
Scrolledtext2.configure(highlightbackground="#d9d9d9")
Scrolledtext2.configure(highlightcolor="black")
Scrolledtext2.configure(insertbackground="black")
Scrolledtext2.configure(insertborderwidth="3")
Scrolledtext2.configure(selectbackground="blue")
Scrolledtext2.configure(selectforeground="white")
Scrolledtext2.configure(wrap="none")

#button点击后操作
def function():
    input_word = Scrolledtext1.get(1.0,END)
    print(input_word)
    #将输入化为字符串'\n'连接
    av = '\n'.join()
    print(av)

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

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

    head={}
    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'

    data = {}
    data['i'] =content
    data['from'] = 'AUTO'
    data['to'] = 'AUTO'
    data['smartresult'] = 'dict'
    data['client'] ='fanyideskweb'
    data['salt'] = '16327269692950'
    data['sign'] = '2381935fe41c5ed6773371fde2a3cff1'
    data['lts'] = '1632726969295'
    data['bv'] = '5f70acd84d315e3a3e7e05f2a4744dfa'
    data['doctype'] = 'json'
    data['version'] = '2.1'
    data['keyfrom'] = 'fanyi.web'
    data['action'] = 'FY_BY_CLICKBUTTION'

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

    targets=json.loads(html)

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

    return sum
top.mainloop()



suchocolate 发表于 2021-12-2 16:57:11

这代码我这跑正常的,除了旧结果没有被清除,其他都正常的。
页: [1]
查看完整版本: tkinter+教学爬取有道,实时显示卡顿及解析bug