홈 페이지 검색 작별!python 으로 자신 만 의 번역 사전 소프트웨어 를 실현 하 는 것 을 가르쳐 드 립 니 다.

디자인 이념
1.먼저 로그 인 한 py 파일 을 쓰 고 python 의 tkinter 라 이브 러 리 를 사용 합 니 다.
2.번역 출력 표시 줄 의 내용 을 얻 기 위해 py 파일 을 하나 더 작성 합 니 다.
3.python 의 tkinter 라 이브 러 리 를 이용 하여 소프트웨어 가 실행 되 는 창 을 완성 합 니 다.
4.창의 반환 값 과 번역 결과 인 터 페 이 스 를 맞 춥 니 다.
5.두 번 째 py 파일 에서 import 첫 번 째 py 파일,두 파일 연결
코드 분석
요청 방식 은 post 입 니 다.from data 의 값 에 주의 하 십시오.여 기 는 웹 페이지 에서 번역 하고 자 하 는 내용 을 하나 더 질 수 있 습 니 다.from data 의 값 변 화 를 관찰 하면'alt','sign','lts'세 가지 값 변 화 를 확인 할 수 있 습 니 다.
웹 페이지 소스 코드 검색.js 에 들 어가 서 해당 하 는 js 파일 을 찾 고 암호 화 규칙 을 찾 으 면 마지막 으로 얻 은 response 를 사전 으로 전환 하여 결 과 를 추출 합 니 다.

class YouDao(object):
    a.LoginPage()
    def __init__(self):
        pass

    def crawl(self, content):
        #          .js            'salt''sign''lts'                       js         js  
        lts = int(time.time() * 1000)    #                          
        timestamp = lts + random.randint(0, 10)
        # sign: n.md5("fanyideskweb" + e + i + "Tbh5E8=q6U3EXe+&L[4c@")

        a = "fanyideskweb"
        e = content
        i = str(timestamp)
        d = "Tbh5E8=q6U3EXe+&L[4c@"
        sign = hashlib.md5((a+e+i+d).encode('utf-8')).hexdigest()
        data = {
            'i': content,
            'from': 'AUTO',
            'to': 'AUTO',
            'smartresult': 'dict',
            'client': 'fanyideskweb',
            'salt': timestamp,
            'sign': sign,
            'lts': lts,
            'bv': 'dd67d51c2bbb03cccdbcfa48735ba27f',
            'doctype': 'json',
            'version': '2.1',
            'keyfrom': 'fanyi.web',
            'action': 'FY_BY_CLICKBUTTION'
        }
        data = urllib.parse.urlencode(data).encode('utf-8')
        headers = {
                    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36',
                    'Cookie': '[email protected]; DICT_UGC=be3af0da19b5c5e6aa4e17bd8d90b28a|; JSESSIONID=abcJcdIfpYuE3eNgyi3Dx; OUTFOX_SEARCH_USER_ID_NCOO=902501357.1460881; user-from=http://www.youdao.com/; from-page=http://www.youdao.com/; _ntes_nnid=250706e8175b6796101a34821527eb62,1612611490655; DICT_SESS=v2|qKlfGGGmbVOAOfp40fQy0UWhfPuOMzWRlfk4Qz0LYERTu0flfn4Ul0l50He40fOW0TK6LlWRf6B0w46LYmh46F0JShMTLOfOm0; DICT_LOGIN=1||1612612510172; STUDY_SESS=EtwvT8KhyXqnLv8r0zdde8FcMOICmtZSIsltEiKZiAQq44wPVNN6PupszWYKIkBKfygQdvKlXU7p3aF+p0H6VcZLod3s2Bld6H/EWIphmRS92qG/3vVhSxHFAXq2yJp8QyH/R6RElNstKdVewVkZp+NyGWhzlamzU5dl6aBiyQ2Ybdo8MpdaPQB26wR6JPAU+P6MxCmnJEvne6pPMc9TTJJnThNrM7aj0X5LVpSBvjZ0h3M1drl4ZsmtkumIhrpyk1pBNevj8UEmS52Cj8DFo+yez89Xrbg4rxsvfSmuH21KlOh/Gwx6G1S/X4FQ7qd/Z2lDsk6Qgl21Md/1bCxa/orloi9qObM4N2yVCVhvkDdg5ILQezB8iskCpUa+ESZk; STUDY_INFO=UID_10AE81F6EF9DD9807BAC3FF3FD6407BA|4|1456638755|1612612364854; ___rl__test__cookies=1612663596564',
                    'Referer': 'http://fanyi.youdao.com/',
                }
        request = urllib.request.Request('http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule',
                                         method='POST', data=data, headers=headers)
        response = urllib.request.urlopen(request)
        result_str = response.read().decode('utf-8')
        result_dict = json.loads(result_str)
        result = result_dict["translateResult"][0][0]["tgt"]
        return result
3.소프트웨어 창 인터페이스
특히 버튼 여기 조심 하 세 요.
self.button=단추(self.window,text=u'조회',command=self.function)
명령 실행 기능

class Application(object):
    def __init__(self):
        #       
        self.window = Tk()
        #     
        self.window.title(u'       ')
        #         
        self.window.geometry("280x350+400+150")
        #    
        self.entry = Entry(self.window)
        self.entry.place(x=10, y=10, width=200, height=25)  # width=  , height=  
        #     
        self.button = Button(self.window, text=u'  ', command=self.function)        # command              
        self.button.place(x=220, y=10, width=50, height=25)
        #       
        self.label = Label(self.window, text=u'    :')
        self.label.place(x=10, y=45)
        #    
        self.text = Text(self.window, background='#ccc')           #       
        self.text.place(x=10, y=75, width=260, height=265)

function 파충류 가 돌아 오 는 값 과 창의 번역 상 자 를 인터페이스 로 만 듭 니 다.

def function(self):
        #            
        content = self.entry.get()
        #               
        youdao = YouDao()
        result = youdao.crawl(content)
        #          
        self.text.delete(1.0, END)      #          
        self.text.insert(END, result)   #             END 
4.소스 코드 전시

import urllib.request     #       
import urllib.parse        #     
import time
import random
import hashlib
import json
from tkinter import Tk, Entry, Button, Label, Text, END  # Tk(    ), Entry(   ), Button(  ), Label(  ), Text(   ),
# END
import a

class YouDao(object):
    a.LoginPage()
    def __init__(self):
        pass

    def crawl(self, content):
        #          .js            'salt''sign''lts'                       js         js  
        lts = int(time.time() * 1000)    #                          
        timestamp = lts + random.randint(0, 10)
        # sign: n.md5("fanyideskweb" + e + i + "Tbh5E8=q6U3EXe+&L[4c@")

        a = "fanyideskweb"
        e = content
        i = str(timestamp)
        d = "Tbh5E8=q6U3EXe+&L[4c@"
        sign = hashlib.md5((a+e+i+d).encode('utf-8')).hexdigest()
        data = {
            'i': content,
            'from': 'AUTO',
            'to': 'AUTO',
            'smartresult': 'dict',
            'client': 'fanyideskweb',
            'salt': timestamp,
            'sign': sign,
            'lts': lts,
            'bv': 'dd67d51c2bbb03cccdbcfa48735ba27f',
            'doctype': 'json',
            'version': '2.1',
            'keyfrom': 'fanyi.web',
            'action': 'FY_BY_CLICKBUTTION'
        }
        data = urllib.parse.urlencode(data).encode('utf-8')
        headers = {
                    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36',
                    'Cookie': '[email protected]; DICT_UGC=be3af0da19b5c5e6aa4e17bd8d90b28a|; JSESSIONID=abcJcdIfpYuE3eNgyi3Dx; OUTFOX_SEARCH_USER_ID_NCOO=902501357.1460881; user-from=http://www.youdao.com/; from-page=http://www.youdao.com/; _ntes_nnid=250706e8175b6796101a34821527eb62,1612611490655; DICT_SESS=v2|qKlfGGGmbVOAOfp40fQy0UWhfPuOMzWRlfk4Qz0LYERTu0flfn4Ul0l50He40fOW0TK6LlWRf6B0w46LYmh46F0JShMTLOfOm0; DICT_LOGIN=1||1612612510172; STUDY_SESS=EtwvT8KhyXqnLv8r0zdde8FcMOICmtZSIsltEiKZiAQq44wPVNN6PupszWYKIkBKfygQdvKlXU7p3aF+p0H6VcZLod3s2Bld6H/EWIphmRS92qG/3vVhSxHFAXq2yJp8QyH/R6RElNstKdVewVkZp+NyGWhzlamzU5dl6aBiyQ2Ybdo8MpdaPQB26wR6JPAU+P6MxCmnJEvne6pPMc9TTJJnThNrM7aj0X5LVpSBvjZ0h3M1drl4ZsmtkumIhrpyk1pBNevj8UEmS52Cj8DFo+yez89Xrbg4rxsvfSmuH21KlOh/Gwx6G1S/X4FQ7qd/Z2lDsk6Qgl21Md/1bCxa/orloi9qObM4N2yVCVhvkDdg5ILQezB8iskCpUa+ESZk; STUDY_INFO=UID_10AE81F6EF9DD9807BAC3FF3FD6407BA|4|1456638755|1612612364854; ___rl__test__cookies=1612663596564',
                    'Referer': 'http://fanyi.youdao.com/',
                }
        request = urllib.request.Request('http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule',
                                         method='POST', data=data, headers=headers)
        response = urllib.request.urlopen(request)
        result_str = response.read().decode('utf-8')
        result_dict = json.loads(result_str)
        result = result_dict["translateResult"][0][0]["tgt"]
        return result


class Application(object):
    def __init__(self):
        #       
        self.window = Tk()
        #     
        self.window.title(u'       ')
        #         
        self.window.geometry("280x350+400+150")
        #    
        self.entry = Entry(self.window)
        self.entry.place(x=10, y=10, width=200, height=25)  # width=  , height=  
        #     
        self.button = Button(self.window, text=u'  ', command=self.function)        # command              
        self.button.place(x=220, y=10, width=50, height=25)
        #       
        self.label = Label(self.window, text=u'    :')
        self.label.place(x=10, y=45)
        #    
        self.text = Text(self.window, background='#ccc')           #       
        self.text.place(x=10, y=75, width=260, height=265)

    def function(self):
        #            
        content = self.entry.get()
        #               
        youdao = YouDao()
        result = youdao.crawl(content)
        #          
        self.text.delete(1.0, END)      #          
        self.text.insert(END, result)   #             END 

    def run(self):
        self.window.mainloop()


if __name__ == '__main__':
    app = Application()
    app.run()


# !/usr/bin/nev python
# -*-coding:utf8-*-
import tkinter
import tkinter.messagebox
class LoginPage(object):
    def __init__(self):
        #      
        self.win = tkinter.Tk()  #   
        self.username = tkinter.StringVar()
        self.password = tkinter.StringVar()
        self.n=2
        self.createForm()
    def login(self):
        if self.username.get()=='    ' and self.password.get()=='    ':
            print('    ')
            tkinter.messagebox.showinfo(title='    ',message='    ')
            self.win.quit()
        elif self.n==0:
            print('          ')
            self.win.quit()
        else:
            print('    ')
            print('       ,   %d   '%self.n)
            tkinter.messagebox.showerror(title='    ',message='    ')
        self.n-=1
    def createForm(self):
        self.win.title('    ')
        self.win.geometry("280x200+400+150")
        #    
        labelname = tkinter.Label(self.win,text='   :',justify=tkinter.RIGHT,width = 100)
        labelname.place(x=35,y=50,width=80,height=20)
        #     
        entryname = tkinter.Entry(self.win, width=150, textvariable=self.username)
        entryname.place(x=110, y=50, width=120, height=20)
        #      
        labelpwd = tkinter.Label(self.win,text='    :', justify=tkinter.RIGHT,width=80)
        labelpwd.place(x=35, y=80, width=80, height=20)
        #        
        entrypwd = tkinter.Entry(self.win, width=150,textvariable=self.password)
        entrypwd.place(x=110, y=80, width=120, height=20)
        #  button  
        buttonOk = tkinter.Button(self.win,text='  ',command=self.login)
        buttonOk.place(x=95,y=130,width=50,height=20)
        #       
        buttonQuit = tkinter.Button(self.win,text='  ',command=self.win.quit)
        buttonQuit.place(x=145,y=130,width=50,height=20)
        self.win.mainloop()
if __name__ == '__main__':
    lg = LoginPage()

모두 두 개의 py 파일 이 있 습 니 다.빨리 소장 하 세 요.빨리 가서 해 보 세 요.자신의 번역 사전 을 가 질 수 있 습 니 다!!
효과 전시
먼저 소프트웨어 효 과 를 보고 먼저 로그 인 하 세 요.
在这里插入图片描述
여러 가지 언어 를 모두 바 꿀 수 있다
在这里插入图片描述
고별 홈 페이지 검색!python 으로 자신 만 의 번역 사전 소프트웨어 를 실현 하 는 것 을 가 르 치 는 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 python 번역 사전 소프트웨어 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기