爬蟲----有道翻譯


import time
import requests
import hashlib


class YoudaoFanyi:

    def __get_cookie(self):
        url='http://fanyi.youdao.com/'
        ret=requests.get(url=url)
        return ret.headers.get('Set-Cookie')

    def translate(self,key,from_='AUTO',to='AUTO'):#from_='zh-CHS',to='en'
        cookie=self.__get_cookie()
        d = key
        m = hashlib.md5()
        u = 'fanyideskweb' #判斷是網頁還是客戶端
        # 由於網頁是用的js的時間戳(毫秒)
        # 所以需要*1000
        f = str(int(time.time()*1000))
        c = "rY0D^0'nM0}g5Mm1z%1G4" #根據md5的方式:
        c = "1L5ja}w$puC.v_Kz3@yYn" #根據md5的方式:
        # md5(u + d + f + c),拼接字符串生成sign參數。
        m.update((u + d + f + c).encode('utf-8')) #生成加密串
        data= { 'i':d,
                'from':from_,
                'to':to,
                'smartresult':'dict',
                'client':u,
                'salt':f,
                'sign':m.hexdigest(),
                'doctype':'json',
                'version':'2.1',
                'keyfrom':'fanyi.web',
                'action':'FY_BY_CLICKBUTTION',
                'typoResult': False }
        headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
                    'Origin':'http://fanyi.youdao.com',
                    'Referer':'http://fanyi.youdao.com/',
                    'Host': 'fanyi.youdao.com',
                    'Connection': 'keep - alive',
                    'Cookie':cookie,
                    } #print(data) #接口
        # post = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule&sessionFrom=null'
        post = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
        youdaojson = requests.post(post,headers = headers,data=data).json() #
        print(youdaojson)
        for i in youdaojson.get('translateResult'):
            for j in i:
                print('翻譯結果:{a[tgt]}'.format(a=j))
        time.sleep(0.5)

if __name__== "__main__":
    youdao = YoudaoFanyi()
    while True:
        key =input("請輸入你要翻譯的文字('quit':退出): ").strip()
        if key=='q':
            break
        youdao.translate(key,from_='zh-CHS',to='en')

 

發佈了62 篇原創文章 · 獲贊 12 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章