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

标签: python urllib
268人阅读 评论(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,有兴趣的新手可以试着运行一下看看,欢迎各位的板砖。

查看评论

Python 3.x中的urllib的改动

在pyhon3.x中,对原来的urllib做了很多的修改。将Request,error,urllib2等都归一到了urllib中。下面就说明一些遇到的细节。        1.原来的urllib.u...
  • u011963627
  • u011963627
  • 2015-04-04 19:49:02
  • 1070

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

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

python爬虫(一)urllib库基本使用

注,以下内容均为python3.5.*代码学习爬虫,首先有学会使用urllib库,这个库可以方便的使我们解析网页的内容,本篇讲一下它的主要用法解析网页#!/usr/bin/env python3 # ...
  • baidu_35085676
  • baidu_35085676
  • 2017-03-16 18:03:32
  • 928

python爬取有道翻译出错 {‘errorcode’:50}

import urllib.request import urllib.parse import json content = input("Enter the words needs trans...
  • weixin_38341450
  • weixin_38341450
  • 2017-12-19 14:55:44
  • 1288

urllib库的简单使用 && 一个简单的Python爬虫示例

urllib库的简单使用 && 一个简单的Python爬虫示例本篇文章,介绍urllib.request库的简单使用以及注意的问题。最后实现一个Python爬虫的示例。本文是基于Python3.6.2...
  • qq_33689414
  • qq_33689414
  • 2017-11-08 15:24:47
  • 560

Python3中urllib使用介绍

Py2.x: Urllib库 Urllin2库 Py3.x: Urllib库 变化: 在Pytho2.x中使用import urllib2——-对应的,在Python3.x中会使用import url...
  • duxu24
  • duxu24
  • 2017-08-19 17:40:16
  • 15465

Python中urllib和urllib2库的用法

使用urllib和urllib2抓取网页:# -*- coding:UTF-8 -*-import urllib2 import urllib# 1、抓取网页 response = urllib2.u...
  • kevinelstri
  • kevinelstri
  • 2016-10-24 15:04:41
  • 2103

Python的Urllib库的使用(爬虫基础)

1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解释才呈现出来的,实质它 是一段HTML代码,加 JS、C...
  • zhongbeida_xue
  • zhongbeida_xue
  • 2016-04-29 11:26:26
  • 1001

python3.x的urllib.request哪去了?

最近看一些python爬虫视频教程,视频中的版本是3.x,而里面的一些方法在2.7的版本却用不了。 这里就先不累述python2和python3的具体区别了,就单纯写爬虫中遇到的区别,比如说urll...
  • qq_25936689
  • qq_25936689
  • 2016-10-07 21:06:23
  • 2903

Python爬虫二(Urllib库的基本使用和高级用法)

转载:静觅 » Python爬虫入门三之Urllib库的基本使用 转载:静觅 » Python爬虫入门四之Urllib库的高级用法 1.分分钟扒一个网页下来 怎样扒网页呢?其...
  • freeking101
  • freeking101
  • 2017-03-01 22:13:09
  • 1068
    个人资料
    等级:
    访问量: 1039
    积分: 49
    排名: 179万+
    文章存档