# 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()
百度翻译练习
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 成长记录-连载(三十六) ——我的第一篇五千字长文,说了什么,你一定想不到 并不是不想每天写公众号,而是之前思考怎...
- Translation-Voice 一个整合百度翻译(支持多种语言)跟科大讯飞的口语翻译app 添加的依赖 登陆科...
- BY刘安娜 ——失踪人口的偶尔出现并不一定回归—— 今日工作间隙咨询爬山路线(周末想爬个山,休个闲),不小心把回复...