Python 2.7.13

IDE Pycharm 5.0.3

macOS 10.12.1

前言

花了一点时间,半抄半写半修改的写了第一个能用的python小程序,作用是在IDE端模拟有道词典的访问,效果如下图所示,不足之处在于,当输入的中英文字符串超过一定数量,会抛出中间代码,新手并不知道怎么处理,望知道的不吝赐教

初阶:交互界面

首先在jupyter或者pycharm中进行交互的操作,核心语句是使用raw_input捕获系统输入

效果图

效果图

代码

# -*- coding: utf-8 -*-

import urllib2

import urllib # python2.7才需要两个urllib

import json

while True:

content = raw_input("请输入需要翻译的内容:") # 系统捕获输入,就是命令框会弹出提示,需要你进行手动输入

if content == 'q': # 输入q退出while循环

break

url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=null"

data = {} # 构造data,里面构造参数传入

data['type'] = 'AUTO'

data['i']=content

data['doctype'] = 'json'

data['xmlVersion'] = '1.8'

data['keyfrom'] = 'fanyi.web'

data['ue'] = 'UTF-8'

data['action'] = 'FY_BY_ENTER'

data['typoResult'] = 'true'

data = urllib.urlencode(data).encode('utf-8') # 将构造的data编码

req = urllib2.Request(url) # 向浏览器发出请求

response = urllib2.urlopen(req, data) # 带参请求,返回执行结果

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

# print(html) # 可以取消print的注释,查看其中效果,这边获取的结果是进行解析

target = json.loads(html) # 以json形式载入获取到的html字符串

print "翻译的内容是:"+target['translateResult'][0][0]['tgt'].encode('utf-8')

# 请输入需要翻译的内容:test

# 翻译的内容是:测试

# 请输入需要翻译的内容:测试

# 翻译的内容是:test

# 请输入需要翻译的内容:q

注意:这里的data字典中的数据根据实际网页中数据为准,可能会不一样,具体操作,点击审查元素。或见小甲鱼54讲。

进阶:做成gui

离实用还差那么两步,第一步是先做成GUI

界面效果

这里写图片描述

代码

# -*- coding: utf-8 -*-

'''

Author:哈士奇说喵

UDate: 2016.7.21

'''

from Tkinter import *

import difflib

import urllib2

import urllib # python2.7才需要两个urllib

import json

# ----------------------主框架部分----------------------

root = Tk()

root.title('翻译GUI&beta1')

root.geometry()

Label_root=Label(root)

#-----------------------定义规则------------------------

def translate(content):

url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=null"

data = {} # 构造data,里面构造参数传入

data['type'] = 'AUTO'

data['i']=content

data['doctype'] = 'json'

data['xmlVersion'] = '1.8'

data['keyfrom'] = 'fanyi.web'

data['ue'] = 'UTF-8'

data['action'] = 'FY_BY_ENTER'

data['typoResult'] = 'true'

data = urllib.urlencode(data).encode('utf-8') # 将构造的data编码

req = urllib2.Request(url) # 向浏览器发出请求

response = urllib2.urlopen(req, data) # 带参请求,返回执行结果

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

# print(html) # 可以取消print的注释,查看其中效果,这边获取的结果是进行解析

target = json.loads(html) # 以json形式载入获取到的html字符串

#print u"翻译的内容是:"+target['translateResult'][0][0]['tgt']

return target['translateResult'][0][0]['tgt'].encode('utf-8')

#还可以继续增加规则函数,只要是两输入的参数都可以

#----------------------触发函数-----------------------

def Answ():# 规则函数

Ans.insert(END,"翻译 %s: "%var_first.get().encode('utf-8') + translate(var_first.get().encode('utf-8')))

def Clea():#清空函数

input_num_first.delete(0,END)#这里entry的delect用0

Ans.delete(0,END)#text中的用0.0

#----------------------输入选择框架--------------------

frame_input = Frame(root)

Label_input=Label(frame_input, text='请输入需要翻译的内容', font=('',15))

var_first = StringVar()

input_num_first = Entry(frame_input, textvariable=var_first)

#---------------------计算结果框架---------------------

frame_output = Frame(root)

Label_output=Label(frame_output, font=('',15))

Ans = Listbox(frame_output, height=5,width=30) #text也可以,Listbox好处在于换行

#-----------------------Button-----------------------

calc = Button(frame_output,text='翻译', command=Answ)

cle = Button(frame_output,text='清空', command=Clea)

Label_root.pack(side=TOP)

frame_input.pack(side=TOP)

Label_input.pack(side=LEFT)

input_num_first.pack(side=LEFT)

frame_output.pack(side=TOP)

Label_output.pack(side=LEFT)

calc.pack(side=LEFT)

cle.pack(side=LEFT)

Ans.pack(side=LEFT)

#-------------------root.mainloop()------------------

root.mainloop()

高阶:发布应用

Pay Attention

python3的用户注意url包的使用和python2是有区别的,请根据实际需求自行百度

Python如果操作频率太快或者网页限制机器人对此的访问,则需要修改head了,修改代码后.当然每个电脑的user都不一样,具体去审查元素查看。

req = urllib2.Request(url) # 生成对象

# 添加如下一行代码;

req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36'),这样就可以伪装成人类啦

当然也可以添加延时模块, 即可限定访问时间。

import time #添加延时模块

time.sleep(1)#休息1秒钟再进行操作

python3的同学需要Tkinter改成小写,还有就是注意编码部分的转化,具体建议可见Python基于Tkinter的二输入规则器(乞丐版)中的参考建议

mac的同学可能遇到tkinter无法输入中文问题,可能是由tkinter版本过低导致,解决方案参考:MAC 系统中,Tkinter 无法用 中文输入法 输入中文

更新

2016.6.14 初次撰写

2017.7.22 重新排版,增加tkinter等

python做软件-用python做个翻译小软件吧~相关推荐

  1. python制作翻译小软件_如何基于Python制作有道翻译小工具

    这篇文章主要介绍了如何基于Python制作有道翻译小工具,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 该工具主要是利用了爬虫,爬取web有道翻译的 ...

  2. 手机拍照翻译成中文怎么做?分享两个手机翻译小妙招

    如何用手机拍照就能够把英文翻译成中文呢?大家出门在外遇到路上贴的英语告示,看不懂的话就会很尴尬,不知道讲的是什么内容,这时候如果有能够直接拍照翻译的软件就会方便很多,今天给大家带来两个可以手机拍照翻译 ...

  3. 做了个信用卡还款计算的小软件

    这两天在打算用信用卡买部手机,进行分期付款,可是又很怕信用卡的高利息,还到最后不划算. 于是下午做了这个小软件,使信用卡透支费用一目了然,这样就可以更好的安排一下自己的支出了. 下载地址: Credi ...

  4. java算术测试软件_Java——编写一个算术测试小软件

    问题描述: 编写一个算术测试小软件,用来训练小学生的算术能力.程序由3个类组成,其中Teacher类对象负责给出算术题目,并判断回答者的答案是否正确:ComputerFrame类对象提供的GUI界面看 ...

  5. 看不懂英文文档不要慌,利用Python轻松实现翻译小软件

    前言 现在关于Python文档很多都是英文版本的,但是有很多学习Python的小伙伴的英语水平并不高,导致很多优质的文档看不懂,这样对于咱们学习Python也会造成很大的阻碍,但是咱们会Python呀 ...

  6. python制作翻译小软件_python 制作一个翻译软件

    from tkinter import * from tkinter import ttk import requests import json class Application(Tk): def ...

  7. Python:用tkinter制做一个音乐下载小软件

    人生苦短,我用Python 平常我们下载的歌曲,都是各种妖魔鬼怪的格式横行,想下载下来用一下都不行,还只能在它的播放器内听,这谁受得了~ 学Python是用来干嘛的? 当然是解决问题咯~ 于是我直接写 ...

  8. 单片机音频谱曲软件_【自己写的小软件】CLY单片机音乐代码超级生成器

    我比较喜欢动漫歌曲,最近用它打了<东京泰迪熊>到单片机里面,用P0.0做蜂鸣器输出口,挺好听的,分享一下源代码应该没什么问题吧? /*--------------------------- ...

  9. java背单词软件_背单词的java小软件

    [实例简介] 这是我写的背单词的一个软件,自己输入单词,然后可以有挑战模式,在规定时间内输入单词,比较有意思,练手不错 [实例截图] [核心代码] 单词背背背 └── 单词背背背 ├── bin │  ...

最新文章

  1. 切换不了摄像头 高拍仪_手机摄像头模组支架保护膜的变革之路
  2. Pytorch自定义Loss
  3. zookeeper 常用命令示例
  4. 26个提升java性能需要注意的地方
  5. nginx安装及负载均衡配置
  6. spring学习(6):使用xml方式实现spring基本应用
  7. Ps胶片颗粒效果插件:Imagenomic Realgrain for Mac
  8. three.js和php,详解three.js本地运行的方法
  9. 使用ServletContextListener关闭Redisson连接
  10. Charles 抓包工具绿化过程记录
  11. 【毕业设计】单片机智能快递柜系统 - stm32 嵌入式 物联网
  12. Github删除历史提交记录的方法
  13. 老男孩教育学习linux决心书
  14. 民法典实施后,夫妻共同债务如何认定?
  15. java 找不到方法_Java程序找不到主方法,在哪里加上呢
  16. MacTex字体缺失 Error: The font “TeX Gyre Termes Math“ cannot be found.
  17. 优化Docker镜像大小方案 2017年12月10日 17:54:46 阅读数:1774 标
  18. 分享《生死狙击2》的大场景草渲染
  19. Android 平台最新资讯(《Google android 入门开发与实战》pdf完整下载)
  20. Android支持蓝牙midi键盘,CME推出无线MIDI蓝牙适配器WIDI Master,可以进行傻瓜式自动配对...

热门文章

  1. Spring Boot 一般层级简介
  2. [Notes] Bash Shell特性
  3. OpenStack创建网络和虚拟机、dhcp设备、虚拟路由器、虚拟机访问外网原理分析
  4. SpringMVC列表不展示数据
  5. iOS-开启arc之后 NSNotificationCenter removeObserver 是否需要调用
  6. 给jar包进行数字签名(2014-06-28记)
  7. 说说身边产品的用户体验
  8. 2012.3.17庆祝我的博客创建!名字是web-sheena
  9. Server.Transfer VS Response.Redirect
  10. 你注意到 .Net Framework 和 .Net Core 中使用 Session 的区别了吗?