最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

告別網(wǎng)頁搜索!教你用python實(shí)現(xiàn)一款屬于自己的翻譯詞典軟件

 更新時(shí)間:2021年06月03日 17:02:49   作者:武亮宇  
教你用python做一款屬于自己的翻譯詞典軟件,從此告別網(wǎng)頁搜索,文中有非常詳細(xì)的代碼示例,小伙伴們快快行動(dòng)吧,需要的朋友可以參考下

一、設(shè)計(jì)理念

1.先寫一個(gè)登錄的py文件,用python的tkinter庫
2.再寫一個(gè)py文件用于爬取有道翻譯輸出欄的內(nèi)容
3.再利用python的tkinter庫,完成軟件運(yùn)行的窗口
4.將窗口的返回值與爬取有道翻譯的結(jié)果接口對(duì)一下
5.第二個(gè)py文件里import第一個(gè)py文件,兩個(gè)文件相關(guān)聯(lián)

二、代碼解析

請(qǐng)求方式為post,要注意from data里的值,這里可以在網(wǎng)頁上再輸一個(gè)想要翻譯的內(nèi)容,觀察from data里的值的變化,可以確定'salt'、 ‘sign'、 'lts'這三個(gè)值變化
進(jìn)入網(wǎng)頁源代碼搜索.js,找到對(duì)應(yīng)的js文件,找到他們的加密規(guī)則,最后將獲得的response轉(zhuǎn)化為字典,提取結(jié)果

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

    def crawl(self, content):
        # 進(jìn)入網(wǎng)頁源代碼搜索.js  點(diǎn)擊進(jìn)入搜索看是否有'salt''sign''lts'這三個(gè) 有則證明找的文件正確 全部復(fù)制 網(wǎng)頁搜js格式化轉(zhuǎn)化  創(chuàng)建js文件
        lts = int(time.time() * 1000)    # 時(shí)間戳轉(zhuǎn)化為毫秒    時(shí)間戳轉(zhuǎn)化為時(shí)間 站長工具
        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': 'OUTFOX_SEARCH_USER_ID=406040753@221.204.120.171; 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

三、軟件窗口界面

尤其注意按鈕這個(gè)地方

self.button = Button(self.window, text=u'查詢', command=self.function)
command命令執(zhí)行function

class Application(object):
    def __init__(self):
        # 創(chuàng)建一個(gè)窗口
        self.window = Tk()
        # 窗口標(biāo)題
        self.window.title(u'武亮宇翻譯詞典')
        # 設(shè)置窗口大小位置
        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執(zhí)行命令的意思 執(zhí)行這個(gè)函數(shù)
        self.button.place(x=220, y=10, width=50, height=25)
        # 翻譯結(jié)果標(biāo)題
        self.label = Label(self.window, text=u'翻譯結(jié)果:')
        self.label.place(x=10, y=45)
        # 翻譯框
        self.text = Text(self.window, background='#ccc')           # 設(shè)置背景顏色
        self.text.place(x=10, y=75, width=260, height=265)

function這塊要把爬蟲返回的值和窗口的翻譯框做一下接口

def function(self):
        # 從輸入框中獲取用戶的值
        content = self.entry.get()
        # 把值發(fā)送給有道服務(wù)器進(jìn)行翻譯
        youdao = YouDao()
        result = youdao.crawl(content)
        # 把結(jié)果放在翻譯框里
        self.text.delete(1.0, END)      # 每次查詢先刪除一下
        self.text.insert(END, result)   # 插入文本最后的位置 導(dǎo)入END庫

四、源碼展示

import urllib.request     # 發(fā)送網(wǎng)絡(luò)請(qǐng)求
import urllib.parse        # 參數(shù)解析
import time
import random
import hashlib
import json
from tkinter import Tk, Entry, Button, Label, Text, END  # Tk(創(chuàng)建窗口), Entry(輸入框), Button(按鈕), Label(標(biāo)簽), Text(文本框),
# END
import a

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

    def crawl(self, content):
        # 進(jìn)入網(wǎng)頁源代碼搜索.js  點(diǎn)擊進(jìn)入搜索看是否有'salt''sign''lts'這三個(gè) 有則證明找的文件正確 全部復(fù)制 網(wǎng)頁搜js格式化轉(zhuǎn)化  創(chuàng)建js文件
        lts = int(time.time() * 1000)    # 時(shí)間戳轉(zhuǎn)化為毫秒    時(shí)間戳轉(zhuǎn)化為時(shí)間 站長工具
        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': 'OUTFOX_SEARCH_USER_ID=406040753@221.204.120.171; 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):
        # 創(chuàng)建一個(gè)窗口
        self.window = Tk()
        # 窗口標(biāo)題
        self.window.title(u'武亮宇翻譯詞典')
        # 設(shè)置窗口大小位置
        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執(zhí)行命令的意思 執(zhí)行這個(gè)函數(shù)
        self.button.place(x=220, y=10, width=50, height=25)
        # 翻譯結(jié)果標(biāo)題
        self.label = Label(self.window, text=u'翻譯結(jié)果:')
        self.label.place(x=10, y=45)
        # 翻譯框
        self.text = Text(self.window, background='#ccc')           # 設(shè)置背景顏色
        self.text.place(x=10, y=75, width=260, height=265)

    def function(self):
        # 從輸入框中獲取用戶的值
        content = self.entry.get()
        # 把值發(fā)送給有道服務(wù)器進(jìn)行翻譯
        youdao = YouDao()
        result = youdao.crawl(content)
        # 把結(jié)果放在翻譯框里
        self.text.delete(1.0, END)      # 每次查詢先刪除一下
        self.text.insert(END, result)   # 插入文本最后的位置 導(dǎo)入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):
        #聲明兩個(gè)變量
        self.win = tkinter.Tk()  # 窗口
        self.username = tkinter.StringVar()
        self.password = tkinter.StringVar()
        self.n=2
        self.createForm()
    def login(self):
        if self.username.get()=='新星計(jì)劃' and self.password.get()=='新星計(jì)劃':
            print('登錄成功')
            tkinter.messagebox.showinfo(title='登錄信息',message='登錄成功')
            self.win.quit()
        elif self.n==0:
            print('你沒有權(quán)限進(jìn)入該系統(tǒng)')
            self.win.quit()
        else:
            print('登錄失敗')
            print('賬號(hào)或密碼錯(cuò)誤,你還有%d次機(jī)會(huì)'%self.n)
            tkinter.messagebox.showerror(title='登錄信息',message='登錄失敗')
        self.n-=1
    def createForm(self):
        self.win.title('登錄界面')
        self.win.geometry("280x200+400+150")
        #創(chuàng)建標(biāo)簽
        labelname = tkinter.Label(self.win,text='用戶名:',justify=tkinter.RIGHT,width = 100)
        labelname.place(x=35,y=50,width=80,height=20)
        #創(chuàng)建文本框
        entryname = tkinter.Entry(self.win, width=150, textvariable=self.username)
        entryname.place(x=110, y=50, width=120, height=20)
        #創(chuàng)建密碼標(biāo)簽
        labelpwd = tkinter.Label(self.win,text='密  碼:', justify=tkinter.RIGHT,width=80)
        labelpwd.place(x=35, y=80, width=80, height=20)
        #創(chuàng)建密碼的文本框
        entrypwd = tkinter.Entry(self.win, width=150,textvariable=self.password)
        entrypwd.place(x=110, y=80, width=120, height=20)
        #創(chuàng)建button按鈕
        buttonOk = tkinter.Button(self.win,text='登錄',command=self.login)
        buttonOk.place(x=95,y=130,width=50,height=20)
        #創(chuàng)建退出的按鈕
        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()

一共兩個(gè)py文件,趕快收藏啊,快去試試吧,能擁有自己的翻譯詞典?。?!

五、效果展示

先看一下軟件效果,先登錄

在這里插入圖片描述

各種語言都可以轉(zhuǎn)換

在這里插入圖片描述

到此這篇關(guān)于告別網(wǎng)頁搜索!教你用python實(shí)現(xiàn)一款屬于自己的翻譯詞典軟件的文章就介紹到這了,更多相關(guān)python翻譯詞典軟件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 玩轉(zhuǎn)python爬蟲之正則表達(dá)式

    玩轉(zhuǎn)python爬蟲之正則表達(dá)式

    這篇文章主要介紹了python爬蟲的正則表達(dá)式,正則表達(dá)式在Python爬蟲是必不可少的神兵利器,本文整理了Python中的正則表達(dá)式的相關(guān)內(nèi)容,感興趣的小伙伴們可以參考一下
    2016-02-02
  • python3?MKL庫?安裝使用教程

    python3?MKL庫?安裝使用教程

    這篇文章主要介紹了python3?MKL庫?安裝使用教程的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • Django 允許局域網(wǎng)中的機(jī)器訪問你的主機(jī)操作

    Django 允許局域網(wǎng)中的機(jī)器訪問你的主機(jī)操作

    這篇文章主要介紹了Django 允許局域網(wǎng)中的機(jī)器訪問你的主機(jī)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • PyQT5之使用QT?Designer創(chuàng)建基本窗口方式

    PyQT5之使用QT?Designer創(chuàng)建基本窗口方式

    這篇文章主要介紹了PyQT5之使用QT?Designer創(chuàng)建基本窗口方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Python之re模塊案例詳解

    Python之re模塊案例詳解

    這篇文章主要介紹了Python之re模塊案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • Python標(biāo)準(zhǔn)庫urllib2的一些使用細(xì)節(jié)總結(jié)

    Python標(biāo)準(zhǔn)庫urllib2的一些使用細(xì)節(jié)總結(jié)

    這篇文章主要介紹了Python標(biāo)準(zhǔn)庫urllib2的一些使用細(xì)節(jié)總結(jié),本文總結(jié)了Proxy 的設(shè)置、Timeout 設(shè)置、Redirect、Cookie等細(xì)節(jié)的使用,需要的朋友可以參考下
    2015-03-03
  • python模擬嗶哩嗶哩滑塊登入驗(yàn)證的實(shí)現(xiàn)

    python模擬嗶哩嗶哩滑塊登入驗(yàn)證的實(shí)現(xiàn)

    這篇文章主要介紹了python模擬嗶哩嗶哩滑塊登入驗(yàn)證的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • pytorch模型訓(xùn)練的時(shí)候GPU使用率不高的問題

    pytorch模型訓(xùn)練的時(shí)候GPU使用率不高的問題

    這篇文章主要介紹了pytorch模型訓(xùn)練的時(shí)候GPU使用率不高的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • python playwright 自動(dòng)等待和斷言詳解

    python playwright 自動(dòng)等待和斷言詳解

    這篇文章主要為大家介紹了python playwright 自動(dòng)等待和斷言,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • Python簡單進(jìn)程鎖代碼實(shí)例

    Python簡單進(jìn)程鎖代碼實(shí)例

    這篇文章主要介紹了Python簡單進(jìn)程鎖代碼實(shí)例,本文講解了線程和進(jìn)程的相關(guān)知識(shí),然后給出了Python的實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2015-04-04

最新評(píng)論

崇阳县| 马鞍山市| 永昌县| 泾川县| 临泉县| 贵州省| 屏东县| 正宁县| 客服| 万荣县| 辽宁省| 裕民县| 思茅市| 沁阳市| 二连浩特市| 绥德县| 九龙坡区| 九寨沟县| 营口市| 清镇市| 普洱| 灵宝市| 股票| 台前县| 夏津县| 延长县| 莒南县| 深水埗区| 万盛区| 博客| 伊宁县| 宣化县| 廊坊市| 和硕县| 芮城县| 麦盖提县| 盈江县| 雅江县| 英山县| 冀州市| 桂阳县|