<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          實戰(zhàn):Python 輕松實現(xiàn)自動化谷歌翻譯!

          共 3103字,需瀏覽 7分鐘

           ·

          2021-12-18 10:19

          背景

          這個功能是在工作時,上級有個需求是讓我將json文件中指定字段的英文翻譯成中文,并且指定要使用谷歌翻譯,理由是翻譯的結果可能會比較準確。

          過程

          因為之前寫過用python實現(xiàn)有道翻譯,是在ajax中找到它的翻譯接口的,所以我以為谷歌應該也差不多,于是我就打開 “開發(fā)者工具”,拼命地尋找它的翻譯接口,果然讓我發(fā)現(xiàn)了,哈哈哈哈~~

          然而我發(fā)現(xiàn)我高興地太早了,這TMD是個啥東西,為啥不是json啊,崩潰!!!

          算了,你牛,我放棄~

          于是我就面向度娘,尋求幫助,搜索關鍵詞 “python實現(xiàn)谷歌翻譯”,哦吼~ 結果還挺多

          哈哈又草率了(欲哭無淚),隨緣選中一個后,大致看了一下(好復雜555~),它們的思路大致是用PyExecJS庫模擬js代碼獲取結果,我才不管這些,能用就行,然后一頓ctrl c/ctrl v 代碼到本地后,修改一些數(shù)據(jù),開始運行。

          接下來就一頓報錯,我就一頓臥槽。好的,沒安裝庫…安裝不成功,和一些莫名的其他原因。這能忍?于是我決定自己動手,豐衣足食,大不了就爬網(wǎng)頁嘛,然后打開網(wǎng)頁源代碼,MD又草率了,并沒有需要的內(nèi)容,忘記結果是用js生成的,唉,怎么辦?只好從最開始的那個ajax的接口下手了


          內(nèi)容里有很多重復的內(nèi)容并且感覺毫無規(guī)則…我硬著頭皮嘗試用正則把內(nèi)容提取出來,代碼我就不貼,因為…

          我花了好長好長時間,瘋狂改正則表達式…啊哈!的確可以得出結果,超開心的~ 但是后面翻譯的過程發(fā)現(xiàn),這只適合翻譯一句話,多一點都不行,它會漏掉…頭又炸了!!!

          我又放棄了,已經(jīng)束手無策了…第二天,看到一篇文章,里面寫的是 “ 字符串轉(zhuǎn)為列表”的知識點,然后我靈光一現(xiàn),想到了用正則和列表相結合,將內(nèi)容提取出來,于是我看到了奧特曼(光)哈哈哈,這次真的可以!!!!不說了上代碼

          代碼


          import requestsimport jsonimport reimport time
          def googleTranslate(text): """ 用谷歌翻譯內(nèi)容,返回翻譯結果 params: text 翻譯的內(nèi)容 return: str s 翻譯結果 """
          url = 'https://translate.google.cn/_/TranslateWebserverUi/data/batchexecute?rpcids=MkEWBc&f.sid=-2984828793698248690&bl=boq_translate-webserver_20201221.17_p0&hl=zh-CN&soc-app=1&soc-platform=1&soc-device=1&_reqid=5445720&rt=c' headers = { 'origin': 'https://translate.google.cn', 'referer': 'https://translate.google.cn/', 'sec-fetch-dest': 'empty', 'sec-fetch-mode': 'cors', 'sec-fetch-site': 'same-origin', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36', 'x-client-data': 'CIW2yQEIpbbJAQjEtskBCKmdygEIrMfKAQj2x8oBCPfHygEItMvKAQihz8oBCNzVygEIi5nLAQjBnMsB', 'Decoded':'message ClientVariations {repeated int32 variation_id = [3300101, 3300133, 3300164, 3313321, 3318700, 3318774, 3318775, 3319220, 3319713, 3320540, 3329163, 3329601];}', 'x-same-domain': '1' } # 以防萬一,我全加上了,可能有些不寫也可以 data = { 'f.req': f'[[["MkEWBc","[[\\"{text}\\",\\"auto\\",\\"zh-CN\\",true],[null]]",null,"generic"]]]' } # text則是你要翻譯的內(nèi)容
          res = requests.post(url, headers=headers, data=data).text # 獲取返回的結果 pattern = '\)\]\}\'\s*\d{3,4}\s*\[(.*)\s*' # 提取需要的部分 part1 = re.findall(pattern, res) part1_list = json.loads(part1[0]) # 字符串轉(zhuǎn)列表 if part1_list[2] is None: # 如果返回的結果中沒有需要的數(shù)據(jù),則返回輸入的內(nèi)容 print(text) return text content1 = part1_list[2].replace('\n', '') part2_list = json.loads(content1)[1][0][0][5:][0] # 過濾結果中重復的部分 s = '' for i in part2_list: # 遍歷結果中的每一句話,并進行拼接 s += i[0] print(s) return stext = 'friend. Let us look back on 2020 and look forward to 2021.'print(text)googleTranslate(text)

          效果

          效果如何?

          如何翻譯成其他語言?

          當然,這僅僅是實現(xiàn)了任何語言轉(zhuǎn)為中文,要轉(zhuǎn)為別的語言,你可以通過執(zhí)行js,獲取所有語言對應的英文字母,以字典的形式存儲,最后保存為json文件

          然后執(zhí)行程序時,動態(tài)地輸入翻譯后的語言,去json文件中獲取對應的英文代表,然后替換data中的"zh-CN"即可。比如我想翻譯成日語,我就將“zh-CN”替換成 “ja”,這樣,翻譯出來的結果就是日語了

          修改data數(shù)據(jù)

          翻譯結果


          好了,今天的分享就到這了,奧里給~

          各位伙伴們好,詹帥本帥搭建了一個個人博客和小程序,匯集各種干貨和資源,也方便大家閱讀,感興趣的小伙伴請移步小程序體驗一下哦!(歡迎提建議)

          推薦閱讀


          牛逼!Python常用數(shù)據(jù)類型的基本操作(長文系列第①篇)

          牛逼!Python的判斷、循環(huán)和各種表達式(長文系列第②篇)

          牛逼!Python函數(shù)和文件操作(長文系列第③篇)

          牛逼!Python錯誤、異常和模塊(長文系列第④篇)


          瀏覽 74
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  xxxxpb日本亚洲 | 日本成人网址 | 好看日逼小视频 | 超碰在线人人 | www.色天堂 |