1. 程式人生 > >【Python3爬蟲】有道翻譯

【Python3爬蟲】有道翻譯

inpu handler ram lan chrome+ str sel text json

準備:Python3.5+Chrome+Pycharm

步驟:

(1)打開有道翻譯的網頁,然後鼠標右鍵檢查(或者按F12),再輸入一個單詞(例如book),在XHR選項中可以看到這條信息,也就是說我們要利用post把要翻譯的內容發送出去,然後再獲取返回的信息,就能得到翻譯的結果了。技術分享圖片技術分享圖片?

(2)打開Pycharm,新建一個test.py,代碼如下:

import requests


def main():
    txt = input("請輸入要翻譯的內容:")
    data = {
        "i": txt,
        "from": "AUTO",
        "to": "AUTO",
        "smartresult": "dict",
        "client": "fanyideskweb",
        "doctype": "json",
        "version": "2.1",
        "keyfrom": "fanyi.web",
        "action": "FY_BY_REALTIME",
        "typoResult": "true"
    }

    url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"
    res = requests.post(url, data=data)
    js = res.json()
    print("翻譯結果:" + js[‘translateResult‘][0][0][‘tgt‘] + ‘\n‘)


if __name__ == ‘__main__‘:
    while True:
        main()
技術分享圖片

我使用的是requests庫,這裏使用post請求返回的結果是一個字典:{‘translateResult‘: [[{‘tgt‘: ‘書‘, ‘src‘: ‘book‘}]], ‘errorCode‘: 0, ‘elapsedTime‘: 0, ‘type‘: ‘EN2ZH_CN‘},然後我們用[‘translateResult‘][0][0][‘tgt‘]把翻譯的結果提取出來就行了。

註意:http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule這個鏈接裏要把translate後面的_o去掉,如果不去掉,post請求返回的是‘errorCode‘:50,至於原因,我這個小白也不清楚==

【Python3爬蟲】有道翻譯