用html5做一个简单网页_用Python做一个简单的翻译工具
本文就來自編程教室一位“小”讀者的投稿(互助學習1群里的同學應該對作者的名字很熟悉吧)。我看著他不停地產出新的代碼和技術文章,不禁感嘆“后生可畏”。
這是一個爬蟲基礎分析和操作的開發案例,在此分享給大家。
當我在電腦上需要翻譯一個單詞時,我會這樣做:
打開瀏覽器 => 打開百度翻譯 => 輸入單詞 => 得到翻譯
不過有時候,當我在命令行環境下寫代碼的時候,懶得再切換到瀏覽器里等待頁面的加載。
于是我就想,能否用萬能的 python 制作一個命令行下的翻譯工具呢?
說干就干!
網上搜索了點信息,加上一頓操作,最終被我搗鼓出來了。來看下最終的效果:
在這個工具中,我用了百度、有道以及谷歌(可選)的翻譯。
開發思路
其中獲取有道翻譯和百度翻譯的原理都差不多,這里我們選取百度翻譯來玩耍一下啦:
首先打開百度翻譯:http://fanyi.baidu.com
接下來右鍵點擊檢查,選擇 Network 中的 XHR (向服務器發送的數據請求)。然后我們在輸入框里輸入 save 這個單詞,我們可以看到一時間這里面多了幾個 sug 標簽,點開一看:
可以看到,這個 sug 請求里面就有我們想要的數據。點進去,Request URL 就是我們需要請求的網址,另外在 Request Method 看到是 POST 方式,也就是提交表單:
移到最后,我們看見了提交的表單參數:
在 Form Data 中,我們看見表單是一個字典:{'kw': 'save'},這里 save 是我們自己輸入的,也就是我們要查詢的單詞,因此我們使用 requests.post 來模擬這個請求:
# 網址和表單我們可以試著打印出返回的東西,你會發現是以 JSON 格式返回的,因此需要引入內置庫 json 來解析:
content在打印出的 json 格式的文本中我們發現翻譯結果在['data'][0]['v'](剛剛的圖片里我們也看見了),接下來提取并返回:
result這樣就完成了提交表單了,實現百度翻譯了。
這里用到的就是一些常用的爬蟲分析和操作,有道翻譯也基本類似,不再贅述,具體操作可參加文末給出的完整代碼。
接下來我們來看看與眾不同的谷歌翻譯,這個玩意實在有些復雜。谷歌翻譯是有 api 的,但是要錢……我不想付錢……網上有大佬給出了解決方案(這里我們簡單地看一下原理):
按照近似百度翻譯的方式操作,我們看到這里多出了一個請求,這里面有我們想要的翻譯結果:
我們回到之前的 Request URL 看一下,發現前面的直接復制就好了,q 是我們需要翻譯的詞,但是這個 tk 參數卻是個棘手的參數。我代碼里用到的解法是網上的,仿照谷歌翻譯頁面上的提供的函數,用 JavaScript 去計算出了這個參數(我懷疑他就是拿的前端源碼,沒仔細對照)。
那么如何在 python 中執行 JavaScript 代碼呢,我們可以通過 pyexecjs 這個庫(注意這個庫導入名是 execjs)。這個部分的源碼就在 Py4Js 這個類里邊了。
特別說明下,因為無法直接使用谷歌翻譯,所以我把它做成了可選項,默認不會調用。
使用方法
我已經將這個項目發布到了 pypi,你可以通過 pip 命令按如下方式安裝:
pip install quicktranslate用起來也是非常的簡單(加上 -g 可增加谷歌翻譯結果):
trans -t 你要翻譯的東西示例:
你好獲取本案例完整代碼,請在公眾號“Crossin的編程教室”中回復關鍵字:翻譯
作者:pynickle
------
一起學,走得遠!
歡迎搜索:Crossin的編程教室
總結
以上是生活随笔為你收集整理的用html5做一个简单网页_用Python做一个简单的翻译工具的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: completablefuture 线程
- 下一篇: em算法详细例子及推导_outlier