爬取有道翻譯

酒香醉佳人發表於2020-11-05

  在有道翻譯頁面上,按F12進行檢視,本人用的是谷歌瀏覽器
在這裡插入圖片描述
  由此可見,其請求方式是post,url為

url = “http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule”

  注意: 在程式碼中填寫url時,把url中的“_o”去掉,不然會返回{“errorCode”:50}
  將滾動條往下拉,可以看到一個From Data,這個是傳送該請求需要攜帶的引數,而且你會發現i的值是我們輸入的要翻譯的內容。
  注意: 重新重新整理頁面,From Data 中的引數 “salt”,“sign”,“ts”,“bv”是會發生變化的,若你重新整理了翻譯頁面,不要忘記在程式碼中修改對應的值。
在這裡插入圖片描述
  點選Response,檢視返回的資料,這裡返回是json格式的資料
在這裡插入圖片描述
程式碼如下:

# 爬取有道翻譯,並實現迴圈翻譯
import requests
import json

while True:
    content =input("請輸入你要翻譯的內容,輸入quit退出翻譯:")
    #去掉_o
    url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"
    #表單
    from_data={
        "i": content,
        "from":" AUTO",
        "to": "AUTO",
        "smartresult": "dict",
        "client": "fanyideskweb",
        "salt": "16045469193562",
        "sign": "424a690044af216638bbc39c5434e39c",
        "lts": "1604546919356",
        "bv": "02a6ad4308a3443b3732d855273259bf",
        "doctype": "json",
        "version":" 2.1",
        "keyfrom": "fanyi.web",
        "action": "FY_BY_REALTlME"
    }
    # 只有輸入quit時,退出翻譯
    if content == "quit":
        print("退出翻譯")
        break

    reponse = requests.post(url,data=from_data)
    reponse.encoding="UTF-8"
    trans_json = reponse.text
    # print(trans_json)
    # 將json資料轉換為字典
    trans_dict = json.loads(trans_json)
    # print(trans_dict)
    # 得到翻譯結果
    translateResult = trans_dict['translateResult'][0][0]['tgt']
    print("翻譯結果:"+translateResult)

  希望我的文章對您有所幫助,感謝您的觀看!

相關文章