通過上面學習的只是,我決定利用百度翻譯的接口,寫一個簡單的翻譯小程序。
上一次我們學習了提交表單的案例,那麼我們就趁熱打鐵,寫一個簡單的翻譯程序。
這裏我們要引入json和jsonpath
因爲百度翻譯獲取的結果是一個json對象
如圖所示
我們要做到的就是把翻譯結果從json對象中提取出來,這就需要jsonpath了!
首先安裝jsonpath:
下載地址:https://pypi.python.org/pypi/jsonpath
安裝方法:點擊Download URL鏈接下載jsonpath,解壓之後執行python setup.py install
JSONPATH的簡單使用
首先要將json對象轉化爲python對象
使用json.loads()
然後要取得拿破崙的翻譯結果只需要找到根節點下面的data節點下面的dst節點就可以了
$..data..dst(這是這樣就可以啦!)
import json
import jsonpath
#把json對象轉換成python對象
jsonobj=json.loads(html)
#從根節點開始匹配,分別匹配到data和dst節點
data=jsonpath.jsonpath(jsonobj,"$..data..dst")
嗯!沒錯就是這麼簡單,這裏只是簡單的介紹一下,具體可以看看官方文檔:http://goessner.net/articles/JsonPath
然後貼上所有的代碼:
# -*- coding:utf-8 -*-
from urllib import request,parse
import json
import jsonpath
'''
query:準備查詢的句子
from1:句子是中文還是英文
to:準備翻譯成中文還是英文
'''
query=input("請輸入想要翻譯的句子或單詞:")
'''
通過ord判斷輸入的句子的第一個字符是否是英文
如果輸入的是中文,那麼則是中文轉英文
如果輸入的是英文,那麼則是英文轉中文
'''
if ord(query[0]) not in range(97,123) and ord(query[0]) not in range(65,91):
from1="zh"
to="en"
else:
from1="en"
to="zh"
#提交post表單的地址,從fiddler中得到的
url="http://fanyi.baidu.com/v2transapi"
headers={ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"}
#表單數據
data={
"from":from1,
"to":to,
"query":query,
"transtype":"realtime",
"simple_means_flag":3
}
#處理成url編碼
data = parse.urlencode(data).encode('utf-8')
req = request.Request(url, headers=headers, data=data)
html = request.urlopen(req).read().decode("utf-8")
#把json對象轉換成python對象
jsonobj=json.loads(html)
#從根節點開始匹配,分別匹配到data和dst節點
data=jsonpath.jsonpath(jsonobj,"$..data..dst")
print("翻譯結果:%s"%data[0])
運行效果圖:
程序完美運行,不過這好像與爬蟲無關,但是這又有什麼關係呢?
人生苦短,我用Python!