百度翻译练习

# coding=utf-8
import requests
import json
import sys
import execjs


class Fanyi:
    def __init__(self, query_string):
        self.url1 = 'https://fanyi.baidu.com/langdetect'
        self.url2 = "https://fanyi.baidu.com/v2transapi"
        self.query_string = query_string
        self.headers = {
            "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1",
            "Cookie":"BAIDUID=497DACF519DB34F3FDEB896FA16D3077:FG=1; BIDUPSID=497DACF519DB34F3FDEB896FA16D3077; PSTM=1551919064; locale=zh; REALTIME_TRANS_SWITCH=1; FANYI_WORD_SWITCH=1; HISTORY_SWITCH=1; SOUND_SPD_SWITCH=1; SOUND_PREFER_SWITCH=1; Hm_lvt_afd111fa62852d1f37001d1f980b6800=1551958887; Hm_lpvt_afd111fa62852d1f37001d1f980b6800=1551958887; delPer=0; PSINO=1; H_PS_PSSID=1440_21083_28608_28585_28557_28604_28625_22157; Hm_lvt_64ecd82404c51e03dc91cb9e8c025574=1551958872,1551958887,1551958942,1551962058; Hm_lpvt_64ecd82404c51e03dc91cb9e8c025574=1551962058; to_lang_often=%5B%7B%22value%22%3A%22zh%22%2C%22text%22%3A%22%u4E2D%u6587%22%7D%2C%7B%22value%22%3A%22en%22%2C%22text%22%3A%22%u82F1%u8BED%22%7D%5D; from_lang_often=%5B%7B%22value%22%3A%22en%22%2C%22text%22%3A%22%u82F1%u8BED%22%7D%2C%7B%22value%22%3A%22zh%22%2C%22text%22%3A%22%u4E2D%u6587%22%7D%5D"
        }

    def get_post_data(self, ret):  # 1.url,post_data
      

        inputData = self.query_string

        with open("E:/baidujs.js") as f:
            jsData = f.read()

        p = execjs.compile(jsData).call("e", inputData)

        post_data = {
            "query": self.query_string,
            "from": 'zh' if ret == 'zh' else 'en',
            "to": 'en' if ret == 'zh' else 'zh',
            "token": "8647df60300e86af7a17457971a88996",
            "sign": p
        }
        return post_data

    def parse_url(self, url2, data):  # 发送请求,获取响应
        resposne = requests.post(url2, data=data, headers=self.headers)
        return resposne.content.decode()

    def get_ret(self, json_str):  # 3.提取数据
        temp_dict = json.loads(json_str)
        # print(temp_dict)
        ret = temp_dict["trans_result"]['data'][0]["dst"]
        print("{} :{}".format(self.query_string, ret))

    def run(self):  # 实现主要逻辑
        data = {
            'query': self.query_string
        }
        resp = requests.post(self.url1, data=data, headers=self.headers)
        data_str = resp.content.decode()
        data_dict = json.loads(data_str)
        ret = data_dict['lan']
        # print(ret)

        # 1.url,post_data
        post_data = self.get_post_data(ret)
        # 2.发送请求,获取响应
        json_str = self.parse_url(self.url2, post_data)
        # print(json_str)
        # 3.提取数据
        self.get_ret(json_str)


if __name__ == '__main__':
    # query_string = sys.argv[1]
    while True:
        query_string = input('请输入内容(退出请输exit):')
        if query_string == 'exit':
            break
        fanyi = Fanyi(query_string)
        fanyi.run()
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容