zoukankan      html  css  js  c++  java
  • python3下使用有道翻译网页版实现翻译功能~~~附源码

    有道在线翻译:http://fanyi.youdao.com/

    在python3中,使用post提交数据进行翻译,默认中英,可更改语言

    按F12 打开开发者工具,在左侧输入“我爱你”翻译,在右侧观察network中提交的post数据Form Data格式,如下

    在preview中查看翻译结果,可以看出是字典格式

    逻辑关系清楚之后,那么就在python3模拟提交Form Data数据来获取翻译结果吧

    data = {'i': ‘我爱你’:'),
                    'from': 'AUTO',#默认中文
                    'to': 'AUTO', #默认英文
                    'smartresult': 'dict',
                    'client': 'fanyideskweb',
                    'salt': '',  # 这两个字段空着也行???
                    'sign': '',
                    'doctype': 'json',
                    'version': '2.1',
                    'keyfrom': 'fanyi.web',
                    'action': 'FY_BY_REALTIME',
                    'typoResult': 'false'}

    其中

    i:待翻译的内容

    from:默认中文,可改

    to:默认英文,可改

    salt和sign可以直接粘贴过来,或者研究源码生成的原理(应该是一个随机码一个md5加密码),but经过我测试这两个字段为空也木有问题可以运行

    运行结果:

    {'type': 'ZH_CN2EN', 'errorCode': 0, 'elapsedTime': 2, 'translateResult': [[{'src': '我爱你', 'tgt': 'I love you'}]]}

    附源码:

     1 #Author:ZM 2019.7.18
     2 '''
     3 利用有道翻译的表单Form Data 格式,交互翻译内容
     4 默认形式是中-英
     5 测试发现salt和sign可以为空
     6 '''
     7 
     8 import urllib.request
     9 import urllib.parse
    10 import json
    11 
    12 def translate( data):
    13     '''
    14     翻译
    15     :param data:<dic> form data
    16     :return: None
    17     '''
    18     url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
    19     data = urllib.parse.urlencode(data).encode('utf-8')
    20     r = urllib.request.urlopen(url, data)
    21     html = r.read().decode('utf-8')
    22     #print(html.strip())  # html是字符串str格式
    23     target = json.loads(html)
    24     #print(target)  # target是字典dict格式
    25     print(target['translateResult'][0][0]['tgt'])
    26 
    27 if __name__=='__main__':
    28 
    29     while True:
    30         data = {'i': input('请输入中文(退出请按 " q "):'),
    31                 'from': 'AUTO',#默认中文
    32                 'to': 'AUTO', #默认英文
    33                 'smartresult': 'dict',
    34                 'client': 'fanyideskweb',
    35                 'salt': '',  # 这两个字段空着也行???
    36                 'sign': '',
    37                 'doctype': 'json',
    38                 'version': '2.1',
    39                 'keyfrom': 'fanyi.web',
    40                 'action': 'FY_BY_REALTIME',
    41                 'typoResult': 'false'}
    42         if data['i'] == 'q':
    43             break
    44         else:
    45             translate(data)
  • 相关阅读:
    POJ 3977 折半枚举
    [CQOI2007]余数求和 (分块+数学
    NOI P1896 互不侵犯 状压DP
    HDU 5446 Unknown Treasure (卢卡斯+CRT
    宁夏邀请赛F FLOYD
    P1414 又是毕业季II (数学?
    P2051 [AHOI2009]中国象棋 DP
    POJ 2449:Remmarguts' Date(A* + SPFA)
    HDU 6215:Brute Force Sorting(链表+队列)
    HDU 6207:Apple(Java高精度)
  • 原文地址:https://www.cnblogs.com/aby321/p/11205263.html
Copyright © 2011-2022 走看看