关闭

python 3.X urllib工具库初体验——CMD模式有道翻译

标签: pythonurllib
221人阅读 评论(0) 收藏 举报
分类:

磨磨蹭蹭的学习着python,今天终于开始接触Python自带的urllib工具库,感谢小甲鱼的Python教程,跟着一步一步做下来,终于感受到Python在网络方面的简洁性,把代码和效果放上来共享,给与我一样的菜菜鸟们一个参考。

import urllib.request
import urllib.parse
import json

#in_str = ' '

while  True:

    print("================================")
    print("---------------Python版有道翻译----------------")
    print("================================")

    in_str = str(input("请输入要翻译的中/英文,离开请输入(por_ext):"))
    if in_str == 'por_ext':
        print("已退出!")
        break


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

    data = {}
    data['type'] = 'AUTO'
    data['i'] = in_str
    data['doctype'] = 'json'
    data['xmlVersion'] = '1.8'
    data['keyfrom'] = 'fanyi.web'
    data['ue'] = 'UTF-8'
    data['action'] = 'FY_BY_CLICKBUTTON'
    data['typoResult'] = 'true'

    data = urllib.parse.urlencode(data).encode('utf=8')

    response = urllib.request.urlopen(url, data)

    html = response.read().decode('utf-8')

    #print(html)
    target = json.loads(html)

    tgt_str = target['translateResult'][0][0]['tgt']

    src_str = target['translateResult'][0][0]['src']

    if 'smartResult' in target:
        smart_result = target['smartResult']['entries']

    print("您输入的是:%s" % src_str)
    print("翻译结果为:%s" % tgt_str)
    if 'smartResult' in target:
        print("智能详解为:")
        for each_value in smart_result:
            if each_value != '':
                print(each_value)


效果如下:
python有道英文翻译
python有道中文翻译
程序退出

如果仅仅是加了点格式就没意思了,如果心细的人会发现,代码中target所代表的的字典中,根据你输入的翻译内容,字典本身的键值对项目组成也会发生改变。

例子:
输入hello后,target字典组成如下:

{"type":"EN2ZH_CN","errorCode":0,"elapsedTime":0,"translateResult":[[{"src":"hello","tgt":"你好"}]],"smartResult":{"type":1,"entries":["","n. 表示问候, 惊奇或唤起注意时的用语","int. 喂;哈罗","n. (Hello)人名;(法)埃洛"]}}

随便输入个poillaw(乱输入的,没这个单词),没修改前会报错:
这里写图片描述

检查反馈的target你会看到返回的字典内容组成发生变化:

{"type":"EN2ZH_CN","errorCode":0,"elapsedTime":110,"translateResult":[[{"src":"poillaw","tgt":"poillaw"}]],"typoResult":["<b>pillow<\/b>"]}

在“translateResult”键值的下一个“smartResult”键值不见了,变成了“typoResult”。

我并没有去看有道官方的说明文档,那么猜测至少“translateResult”键值对及其之前的内容应该是不变的,那么我如果要在shell里面输出“smartResult”键值对信息前,就需要对其进行检测。

检测分两处,第一处是在smart_Result变量的赋值前用if X in X 语句确定成员是否存在。第二处是在打印语句前增加检测,并在确定可以打印后,去除可能出现的空白内容。

我用的版本是Python 3.6,有兴趣的新手可以试着运行一下看看,欢迎各位的板砖。

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果

运行平台:Windows Python版本:Python3.x IDE:Sublime text3
  • c406495762
  • c406495762
  • 2017-03-01 12:59
  • 9241

在命令行用使用有道翻译,python写一个命令行有道词典

平常都是用终端敲, 有时候不会的词语也懒得打开词典了,干脆搞了个简单的查词命令.思路也很简单,直接调用有道的api,解析下返回的json就ok了。只用到了python原生的库,支持python2和py...
  • Lina_ACM
  • Lina_ACM
  • 2016-09-18 12:39
  • 874

用python写一个命令行有道翻译

平常都是用终端敲, 有时候不会的词语也懒得打开词典了,干脆搞了个简单的查词命令.思路也很简单,直接调用有道的api,解析下返回的json就ok了。只用到了python原生的库,支持python2和py...
  • WangPegasus
  • WangPegasus
  • 2015-12-02 22:15
  • 1421

网络爬虫:利用有道实现“语言翻译”功能

代码如下:import urllib.request import urllib.parse import jsondef main(): while True: conten...
  • chaowanghn
  • chaowanghn
  • 2017-01-18 09:44
  • 1819

有道网页翻译chrome插件---我用过的最好的翻译插件

大家知道很多优秀计算机的资源和文章都是用英文写的。对于英文不好的人来说,看纯英文的文章会有点吃力,而且会有恐惧感。但是不看些英文的资料,无疑是对外界精彩的思想精华,前沿技术关上了一扇门。之前用过goo...
  • kevinstoic
  • kevinstoic
  • 2013-06-01 20:50
  • 7130

火狐浏览器安装有道翻译插件

使用火狐浏览英文网页,一键翻译成中文,阅读无障碍。 既可以选择全文翻译,也能按照英文水平、只翻译相应部分的词汇,阅读理解更方便。 安装地址:http://mozilla.com.cn/threa...
  • q5841818
  • q5841818
  • 2015-08-23 21:15
  • 8958

如何调用有道翻译API(Java,HTTP)

申请Key 首先如图进入有道翻译,在下方点击“有道翻译API”。 紧接着来调用数据接口,按提示完成下列输入框。 如下图所示,已经申请成功了。 下图是官方给的示例,可以有xml和js...
  • NoMasp
  • NoMasp
  • 2015-10-09 21:33
  • 5568

Asp.NET调用有道翻译API

调用有道API进行翻译,如图: HTML:   翻译 #sourceWord { hei...
  • apollokk
  • apollokk
  • 2013-07-16 12:16
  • 2924

PHP实现翻译功能

今天我们聊聊用PHP实现翻译功能,当然PHP这门语言它肯定无法成为一个翻译家,我们需要借助专门做翻译这 件事情的程序给我们开放的API接口来获取数据,最终交由PHP来解析数据,展示到我们需要的平台上。...
  • bayren820
  • bayren820
  • 2015-12-28 21:16
  • 2633

Python零基础入门二十之爬虫之抓取有道词典

这篇博客在上一篇的基础上,继续深入学习爬虫的技巧。上一篇博客中通过从网页上抓取一张简单的图片简单了解了urllib.request中的模块的用法,今天在学习一个有道词典的例子。这个例子主要是实现我们在...
  • BeMoreQuiet
  • BeMoreQuiet
  • 2017-01-19 15:20
  • 2681
    个人资料
    • 访问:819次
    • 积分:46
    • 等级:
    • 排名:千里之外
    • 原创:4篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档