python3爬蟲攻略(4):簡單的翻譯程序

通過上面學習的只是,我決定利用百度翻譯的接口,寫一個簡單的翻譯小程序。
上一次我們學習了提交表單的案例,那麼我們就趁熱打鐵,寫一個簡單的翻譯程序。
這裏我們要引入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!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章