1. 程式人生 > >urllib模組通過post請求獲取資料

urllib模組通過post請求獲取資料

功能: 輸入你要查詢的單詞,會返回相對應的結果

import urllib.request
import urllib.parse
import json


class youdaoSpider:
    def __init__(self):
        # 注意,這裡http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule
        # 要把連線中的_o去掉,要不然會報{"errorCode":50}錯誤
        self.url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule
" self.headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"} def getData(self, data): # post請求就要傳入data rep = urllib.request.Request(self.url, data=data, headers=self.headers) #
傳送請求 res = urllib.request.urlopen(rep) # 獲取html文字 html = res.read().decode("utf-8") # 將json字串轉換成字典 dic = json.loads(html) # 提取資料 result = dic["translateResult"][0][0]["tgt"] print(result) def workOn(self): work = input("
請輸入要翻譯的單詞:") # 上傳的資料以字典的形式上傳 data = { "i":work , "from": "AUTO", "to": "AUTO", "smartresult": "dict", "client": "fanyideskweb", "salt": "1542875948524", "sign": "3535bd742994f3b74924927dabf24541", "doctype": "json", "version": "2.1", "keyfrom": "fanyi.web", "action": "FY_BY_REALTIME", "typoResult": "false", } # urlencode("字典") - > 字串 data = urllib.parse.urlencode(data).encode("utf-8") self.getData(data) if __name__ == "__main__": youdao = youdaoSpider() youdao.workOn()

執行結果:

請輸入要翻譯的單詞:hello
你好