有道翻译(模拟)

import time
import random
from fengzhuang_all import post
import json

# 将md5加密进行函数封装
def md5_my(sign_str):
    # md5加密模块
    import hashlib
    # 创建md5对象 使用hashlib.md5()方法
    md5_o=hashlib.md5()
    # 需要有bytes, 作为参数
    # 由str, 转换成 bytes encode-------str.encode('utf-8')
    # 由bytes转换成 str, decode---------bytes.decode('utf-8')
    sign_bytes=sign_str.encode('utf-8')
    # 查看sign_bytes为什么类型?
    # print(type(sign_bytes))
    # 更新md5 object的值
    md5_o.update(sign_bytes)
    # 将加密后的转换为str类型 使用 md5_o.hexdigest()方法
    sign_str=md5_o.hexdigest()
    return sign_str
# 将翻译过程封装成函数
def translate(kw):
    # 定义URL
    url='http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
    # 生成form   1.i 需要确定 2.salt 需要确定 3.sign 需要确定
    # 将AJAX内分析出来的form内容转换成Python代码实现
    # i=key(key为自行输入的值)
    key=kw

    # salt = "" + ((new Date).getTime() + parseInt(10 * Math.random(), 10)
    # time.time()*1000 结果为浮点型 需要转换成 整型int
    salt= int(time.time()*1000+random.randint(0,10))
    # salt 需要转换为str类型
    salt_str=str(salt)

    # sign = u.md5(S + n + r + D)
    # S = "fanyideskweb"   n=key   r=salt   D = "ebSeFb%=XZ%T[KZ)c(sy!"
    sign_str="fanyideskweb" +key+salt_str+"ebSeFb%=XZ%T[KZ)c(sy!"

    # 调用md5加密函数对sign_str进行加密
    sign_md5_str=md5_my(sign_str)
    form={
        "i": key,
        "from": "AUTO",
        "to": "AUTO",
        "smartresult": "dict",
        "client": "fanyideskweb",
        "salt": salt_str,
        "sign": sign_md5_str,
        "doctype": "json",
        "version": "2.1",
        "keyfrom": "fanyi.web",
        "action": "FY_BY_REALTIME",
        "typoResult": "false",
    }

    # 定义headers头
    headers={
        "Accept": "application/json, text/javascript, */*; q=0.01",
        # "Accept-Encoding": "gzip, deflate",
        "Accept-Language": "zh-CN,zh;q=0.9",
        "Connection": "keep-alive",
        # "Content-Length": "214",
        "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
        "Cookie": "P_INFO=m18032878656_1@163.com|1534150707|2|mail163|00&99|heb&1530976017&yanxuan_web#bej&null#10#0#0|180656&1||18032878656@163.com; OUTFOX_SEARCH_USER_ID=756027640@10.168.8.76; OUTFOX_SEARCH_USER_ID_NCOO=1250267709.158026; JSESSIONID=aaamQbnIYcOhQahSPg4uw; ___rl__test__cookies=1534244751313",
        "Host": "fanyi.youdao.com",
        "Origin": "http://fanyi.youdao.com",
        "Referer": "http://fanyi.youdao.com/",
        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
        "X-Requested-With": "XMLHttpRequest",
    }
    # 调用之前封装好的函数 post 方法
    html_bytes=post(url,form,headers=headers)
    # print(type(html_bytes))
    # json.dumps()函数是将字典转化为字符串
    # json.loads()函数是将字符串转化为字典
    res_dict=json.loads(html_bytes.decode('utf-8'))
    # print(html_bytes.decode('utf-8'))
    # 从返回内容中提取翻译内容的准确信息
    translateResult=res_dict['translateResult'][0][0]['tgt']
    return translateResult
if __name__ == '__main__':
    while True:
        ww=input('请输入你要翻译的内容:')
        print('翻译结果为:'+ translate(ww))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值