H5W3
当前位置:H5W3 > python > 正文

【Python】我要偷偷的学Python,然后惊呆所有人(第十四天)

【Python】我要偷偷的学Python,然后惊呆所有人(第十四天)
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…
https://xueqiu.com/5358731548…

文章目录

    • 前言
      • 欢迎来到我们的圈子
    • 摊牌啦,《偷偷学Python》系列即将进入一段漫长的XXX
    • 《Python百战穿山甲》(一):翻译软件
    • 设计图

前言

前期回顾:我要偷偷学Python(第十三天)

又一篇爆款啊。

插播一条推送:(如果是小白的话,可以看一下下面这一段)

欢迎来到我们的圈子

我建了一个Python学习答疑群,有兴趣的朋友可以了解一下:这是个什么群

群里已经有一千多个小伙伴了哦!!!

直通群的传送门:传送门


`本系列文默认各位有一定的C或C++基础,因为我是学了点C++的皮毛之后入手的Python,这里也要感谢齐锋学长送来的支持。
本系列文默认各位会百度,学习‘模块’这个模块的话,还是建议大家有自己的编辑器和编译器的,上一篇已经给大家做了推荐啦?
我要的不多,点个关注就好啦
然后呢,本系列的目录嘛,说实话我个人比较倾向于那两本 Primer Plus,所以就跟着它们的目录结构吧。
本系列也会着重培养各位的自主动手能力,毕竟我不可能把所有知识点都给你讲到,所以自己解决需求的能力就尤为重要,所以我在文中埋得坑请不要把它们看成坑,那是我留给你们的锻炼机会,请各显神通,自行解决。`
*   1
*   2
*   3
*   4
*   5
*   6
*   7

摊牌啦,《偷偷学Python》系列即将进入一段漫长的XXX

漫长的《爬虫百战》时期啦。

对,接下来会放出大量的小项目实操,有些会带上经济效益,有些纯粹练着好玩。

当然,写着好玩的小项目肯定不会全写完,但是我会做成一个高可拓展的项目,把接口明确了,大家有意愿的话就自行拓展。

《Python百战穿山甲》(一):翻译软件

为什么我会想做这个呢?好玩呗,我关注了几个“爬虫百战”的专栏,先挑了这个来做,不过他们大多是只能翻译一个单词的,那我也会啊,没意思。

在我的不懈努力之下,我爬呀爬,爬呀爬,终于爬到了一个大佬,他把人家的加密算法给破解了。

事情是这样的:为什么大部分的博客都只提供单个单词的翻译呢?因为他们没办法提供多个单词翻译,而且他们能抓到的单词释义也是有限的,算了,还是放图吧,感觉不放图讲不清楚了今天:

【Python】我要偷偷的学Python,然后惊呆所有人(第十四天)

呐,他们都是用这个叫做sug的不完全包,我刚开始在百度翻译上确实也能抓出这样的包,但是在有道上刷不出来。

其实是应该用这张图里面的第一个的那种包,但是那个包有加密,在百度翻译上面,你要带上cookie,还有两个秘钥,暂且算是秘钥,因为这些东西都是跟随单词而变化的,所以如果每个都是抓包,拆包,那其实没什么意义了。

这时候,有个大佬发现了其中的规律,于是他用一顿猛如虎的操作,呐:https://blog.csdn.net/nunchak…

好极,破解了。

然后就有了我们后面的操作。

以下这段代码是我们群里的小伙伴肆柒和我一起协作完成的,我把改好的算法给他,他配备上了UI。

`import urllib.request
import requests
import urllib.parse
import json
import time
import random
import hashlib
import tkinter
from tkinter import ttk
text = ""
# 清空输入框
def qing_kong(shu_ru):
shu_ru.delete(0, tkinter.END)
# 确定开始查询
def que_ding(a, b, content, shu_chu):
global text
# content = input('请输入需要翻译的内容:')
# from_s = input("请输入待翻译的语种,中文请输入ZH,英文请输入EN:")
# to_s = input("请输入目标语种,中文请输入ZH,英文请输入EN:")
if a == "汉语":
from_s = 'ZH'
else:
from_s = 'EN'
if a == "英语":
to_s = 'EN'
else:
to_s = 'ZH'
# url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&sessionFrom=https://www.google.com/'
url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
data = {}
u = 'fanyideskweb'
d = content
f = str(int(time.time() * 1000) + random.randint(1, 10))
c = 'rY0D^0'nM0}g5Mm1z%1G4'
sign = hashlib.md5((u + d + f + c).encode('utf-8')).hexdigest()
data['i'] = content
data['from'] = from_s
data['to'] = to_s
data['smartresult'] = 'dict'
data['client'] = 'fanyideskweb'
data['salt'] = f
data['sign'] = sign
data['doctype'] = 'json'
data['version'] = '2.1'
data['keyfrom'] = 'fanyi.web'
data['action'] = 'FY_BY_CL1CKBUTTON'
data['typoResult'] = 'true'
data = urllib.parse.urlencode(data).encode('utf-8')
res = requests.post(url, data=data)
request = urllib.request.Request(url=url, data=data, method='POST')
response = urllib.request.urlopen(request)
# print(response.read().decode('utf-8'))
pre_js = response.read().decode('utf-8')
# pat=re.compile(r'[u4e00-u9fa5]+')
# result=pat.findall(pre_js)
# result = 'n'.join(result[5:])
a = pre_js.split('[[')
b = a[1].split(']]')
c = b[0]
j = json.loads(c)
text = j['tgt']
shu_chu.set(text)
print(j['tgt'])
# for i in result:
#    print(i+'n')
# print(pre_js)
# 主函数
def jie_main():
global text
win = tkinter.Tk()
win.title("翻译")
win.geometry("500x400")
win.resizable(0, 0)
shu_chu = tkinter.StringVar()
shu_chu.set(text)
tkinter.Label(win, text='翻译', font=('Arial', 12)).place(x=100, y=30, anchor='nw')
tkinter.Label(win, text='翻译语言选项', font=('Arial', 12)).place(x=10, y=70, anchor='nw')
yu_yan1 = ttk.Combobox(win, width=10)
yu_yan1['value'] = ('汉语', '英语')
yu_yan1.current(0)
yu_yan1.place(x=120, y=70, anchor='nw')
tkinter.Label(win, text='》》》', font=('Arial', 12)).place(x=220, y=70, anchor='nw')
yu_yan2 = ttk.Combobox(win, width=10)
yu_yan2['value'] = ('英语', '汉语')
yu_yan2.current(0)
yu_yan2.place(x=270, y=70, anchor='nw')
tx1 = tkinter.Label(win, text='原文:', font=('Arial', 12))
tx1.place(x=10, y=120, anchor='nw')
shu_ru = tkinter.Entry(win)
shu_ru.place(x=120, y=120, anchor='nw')
guess = shu_ru.get()
tx2 = tkinter.Label(win, text='译文:', font=('Arial', 12))
tx2.place(x=10, y=160, anchor='nw')
tkinter.Label(win, textvariable=shu_chu, font=('Arial', 12)).place(x=100, y=160, anchor='nw')
bt1 = tkinter.Button(win, text='清空', command=lambda: qing_kong(shu_ru))
bt1.place(x=10, y=210, anchor='nw')
bt2 = tkinter.Button(win, text='确定', command=lambda: que_ding(yu_yan1.get(), yu_yan2.get(), shu_ru.get(), shu_chu))
bt2.place(x=100, y=210, anchor='nw')
win.mainloop()
if __name__ == '__main__':
jie_main()`
*   1
*   2
*   3
*   4
*   5
*   6
*   7
*   8
*   9
*   10
*   11
*   12
*   13
*   14
*   15
*   16
*   17
*   18
*   19
*   20
*   21
*   22
*   23
*   24
*   25
*   26
*   27
*   28
*   29
*   30
*   31
*   32
*   33
*   34
*   35
*   36
*   37
*   38
*   39
*   40
*   41
*   42
*   43
*   44
*   45
*   46
*   47
*   48
*   49
*   50
*   51
*   52
*   53
*   54
*   55
*   56
*   57
*   58
*   59
*   60
*   61
*   62
*   63
*   64
*   65
*   66
*   67
*   68
*   69
*   70
*   71
*   72
*   73
*   74
*   75
*   76
*   77
*   78
*   79
*   80
*   81
*   82
*   83
*   84
*   85
*   86
*   87
*   88
*   89
*   90
*   91
*   92
*   93
*   94
*   95
*   96
*   97
*   98
*   99
*   100
*   101
*   102
*   103
*   104
*   105
*   106
*   107
*   108
*   109
*   110
*   111
*   112
*   113
*   114
*   115
*   116
*   117
*   118
*   119
*   120
*   121
*   122
*   123
*   124
*   125

设计图

【Python】我要偷偷的学Python,然后惊呆所有人(第十四天)

感觉好像也没什么可拓展的了嘛,除了那个语言模块那边。
应该是我们的小伙伴做的太完善了已经。

我来说一下我的想法啊,长话短说吧,再不说完等下来不及审核了。

建造者模式。

【Python】我要偷偷的学Python,然后惊呆所有人(第十四天)

场景类从语种类中获取所有的语种类别,然后填充到UI类的下拉框中,场景类开放,算法和UI封闭。

草率了点,UML都没开。。。
见谅啊。

如果大家有任何疑惑,可以直接问我,也可以了解一下什么是建造者模式

本文地址:H5W3 » 【Python】我要偷偷的学Python,然后惊呆所有人(第十四天)

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址