Python控制台英汉-汉英电子词典(代码分享)

本文介绍了一个简单的Python实现的控制台电子词典项目,该项目能够进行英汉及汉英翻译,通过向有道词典发送HTTP请求并解析JSON响应来获取翻译结果。

       Python控制台英汉-汉英电子词典

                                     By qianghaohao(CodeNutter)
       用python实现了下控制台电子词典,数据来自有道,通过向有道发送http表单数据,
然后将服务器返回的json数据解析得到翻译结果,代码比较简单,练练手!
# coding=utf-8
# Filename: trans.py
# Author: qianghaohao(CodeNutter)
# Email: codenutter@foxmail.com
# Program: 控制台电子词典
#
import os
import sys
import requests
import random
import json
# import chardet   # 第三方模块检查字符串编码,用于调试
from requests.exceptions import ConnectionError, Timeout
# os.system('set PYTHONIOENCODING=UTF-8')
def GetHelp():
    U'''
    GNU trans 1.0
               By  qianghaohao(CodeNutter)
    Usage: trans [OPTION]  [statements]
        --version    版本信息
        --help       使用帮助
    Example: trans campus
             trans  --version
             trans  --help
    '''
    pass

if (len(sys.argv) < 2):
    print '''
          trans: missing OPTION
          Usage: trans [OPTION] [statements]
          Try 'trans --help' for more details!
          '''
    sys.exit(1)
if sys.argv[1].startswith('--'):
    option = sys.argv[1][2:]
    if option == 'version':
        print 'trans: Version 1.0'
    elif option == 'help':
        print GetHelp.__doc__
    else:
        print '''
              Unknown option!
              Try 'trans --help' for more options!
              '''
        sys.exit(2)
else:
    to_be_trans = ' '.join(sys.argv[1:]).decode('GB2312').encode('utf-8')

    # print chardet.detect(to_be_trans)  # 第三方模块检查字符串编码,用于调试
    # --------有道翻译表单数据--------
    data={}
    data['type']='AUTO'
    data['i']=to_be_trans
    data['doctype']='json'
    data['xmlVersion']='1.8'
    data['keyfrom']='fanyi.web'
    data['ue']='UTF-8'
    data['action']='FY_BY_CLICKBUTTON'
    data['typoResult']='true'

    youdao_url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=dict2.index'

    #  ---------- http报头:用户代理 ----------------
    USER_AGENTS = (
        'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:11.0) Gecko/20100101 Firefox/11.0',
        'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100 101 Firefox/22.0',
        'Mozilla/5.0 (Windows NT 6.1; rv:11.0) Gecko/20100101 Firefox/11.0',
        ('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.5 (KHTML, like Gecko) '
         'Chrome/19.0.1084.46 Safari/536.5'),
        ('Mozilla/5.0 (Windows; Windows NT 6.1) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.46'
         'Safari/536.5')
    )
    #  --------- 模拟手工请求:随机切换用户代理 ---------
    headers = {'User-Agent':random.choice(USER_AGENTS)}
    try:
        r = requests.post(youdao_url, timeout=10, headers=headers, data=data)
    except ConnectionError:
        print 'Network connection failed!'
        sys.exit(1)
    except Timeout:
        print 'request timeout!'
        sys.exit(1)

    result = r.json()
    print result['translateResult'][0][0]['tgt'].encode(sys.stdout.encoding)
    使用示例(如果感兴趣的朋友可以用pyinstaller工具将py源码转换成exe格式,直接执行,比较方便,在此用解释器执行):
    
      附源码地址:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值