本篇為實現谷歌翻譯的功能,在編寫的時候以為只是乙個介面的問題。
沒想到的是每次翻譯都會觸發一次js的執行,在請求引數中生成乙個tk。
文中tk的實現是復用的網上大神的**生成tk。
好了,不說了直接看**吧!
1 # /usr/bin/env python見執行效果:2 # -*- coding: utf-8 -*-
3import urllib.parse
4import execjs,requests,termcolor56
class
return_tk():78
def __init__(self):
9 self.ctx = execjs.compile("""
10function tl(a)
27 a =b;
28for (f = 0; f < e.length; f++) a +=e[f],
29 a =rl(a, $b);
30 a =rl(a, zb);
31 a ^= b1 || 0;32
0 > a && (a = (a & 2147483647) + 2147483648
);33 a %=1e6;
34return a.tostring() + jd + (a ^b)
35};
3637
function rl(a, b)
46returna47
}48""")
4950
def gettk(self, text):
51return self.ctx.call("tl"
, text)
5253
def open_url(url):
54 headers =
55 req = requests.get(url=url, headers=headers)
56return req.content.decode('
utf-8')
5758
def max_length(content):
59if len(content) > 4891
:60 print("
翻譯文字超過限制!")
61return
6263
def print_result(parm):
64 result =parm
65 str_end = result.find("
\",")66
if str_end > 4
:67 print("
翻譯的結果為:
",result[4
:str_end])
6869
def en_to_zn_translate(content, tk):
70max_length(content)
71 content =urllib.parse.quote(content)
72#英譯漢
73 url = "
"\74"
&sl=en&tl=zh-cn&hl=zh-cn&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca"\
75"&dt=rw&dt=rm&dt=ss&dt=t&ie=utf-8&oe=utf-8&clearbtn=1&otf=1&pc=1"\
76"&srcrom=0&ssel=0&tsel=0&kc=2&tk=%s&q=%s
" %(tk, content)
77 result =open_url(url)
78print_result(result)
7980
def zn_to_en_translate(content,tk):
81max_length(content)
82 content =urllib.parse.quote(content)
83#漢譯英
84 url = "
"\85"
&sl=zh-cn&tl=en&hl=zh-cn&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca"\
86"&dt=rw&dt=rm&dt=ss&dt=t&ie=utf-8&oe=utf-8"\
87"&source=btn&ssel=3&tsel=3&kc=0&tk=%s&q=%s
"%(tk,content)
88 result =open_url(url)
89print_result(result)
9091
def main():
92 js =return_tk()
93while
true:
94 print(termcolor.colored("
請先輸入要進行的操作:q表示退出;e表示英文翻譯成中文;z表示中文翻譯成英文。
","red"))
95 change = input("
請選擇翻譯選項:")
96if change == 'q'
:97break
98 elif change == 'e'
:99 content = input("
請輸入要翻譯的英文:")
100 tk =js.gettk(content)
101en_to_zn_translate(content,tk)
102 elif change == 'z'
:103 content = input("
請輸入要翻譯的中文:")
104 tk =js.gettk(content)
105zn_to_en_translate(content,tk)
106else
:107 print("
請輸入正確的選項!")
108109 main()
總結:從**上來看,寫的比較簡潔,沒有高大上的寫法,只是單純的實現乙個功能。
除了tk的生成封裝成了類,其他的全部是用函式式程式設計實現。
Python3 動手自己寫谷歌翻譯
本篇為實現谷歌翻譯的功能,在編寫的時候以為只是乙個介面的問題。沒想到的是每次翻譯都會觸發一次js的執行,在請求引數中生成乙個tk。文中tk的實現是復用的網上大神的 生成tk。好了,不說了直接看 吧!1 usr bin env python 2 coding utf 8 3 import urllib...
自己動手用python寫豆瓣FM
以前裝過幾次ubuntu,但總是因為缺少一些軟體工具而最終不得不回到windows下。最近又迷上了ubuntu,逐漸從windows系統轉戰ubuntu。這次,openfetion wineqq chrome,還有wps等軟體為這次過度打下了堅實的基礎。希望能夠成為乙個忠實的linux開源愛好者。閒...
python3實現谷歌翻譯
quad 中文轉英文的翻譯 from googletrans import translator def trans text translator translator return translator.translate text,dest en text if name main res t...