本人由于英语渣,在linux底下经常看文档,但是有没有想有道词典这种软件,所以遇到不懂的单词只能手动复制粘贴在网上查找,这样就很不方便,学了python之后,就试着自己尝试下个在命令行下查找单词翻译的脚本。

在我眼里,实现上面这个要求的脚本语言分几块完成:

一是选好一个单词翻译的网站,优先选择GET方法的(代码写起来比较方便),如果是POST方法也不是没有办法,只是要自己新建一个POST请求,为此我就找到了一个用GET方法查找单词的神器网站——在线翻译_在线词典_金山词霸_爱词霸英语,用起来就很爽。

二是把对应结果那一页的html代码爬下来,然后用适当的正则表达式进行匹配,把结果记录下来。

最后就是把结果输出到cmd中。代码如下:

#!/usr/bin/env python
#-*- coding:utf-8 -*- import urllib
import sys
import re
from bs4 import BeautifulSoup URL = 'http://www.iciba.com/' while True:
try:
word = raw_input("请输入你要查找的单词(或者按CTRL+D或CTRL+C退出):")
except KeyboardInterrupt:
print "\n退出。"
sys.exit(1)
except EOFError:
print "\n退出。"
sys.exit(1)
if not word:
break
url = URL + word
#查找单词
f = urllib.urlopen(url)
reader = f.readlines()
#用正则表达式进行匹配
#这里我用BeautifulSoup进行标签的解析
soup = BeautifulSoup(''.join(reader)) #新建一个soup对象
#先进行一般释义的抓取
results1 = soup.findAll("div",{"class":"group_pos"})
if not results1:
print '不好意思,找不到你要查找的单词'
continue
#对每块进行解析
sys.stdout.write('\n') #换行
for item in results1:
aa = item.findAll("strong",{"class":"fl"})
bb = item.findAll("span",{"class":"label_list"})
#二重循环
for i in range(len(aa)):
print aa[i].contents[0],
dd = bb[i].findAll("label")
for ee in dd:
print ee.contents[0],
sys.stdout.write('\n') #分好行
#查找网络释义
results2 = soup.findAll("div",{"class":"net_paraphrase"})
print "网络释义:",
ff = results2[0].findAll("li")
for item in ff:
print item.contents[0],
sys.stdout.write('\n') #换行
sys.stdout.write('\n') #换行

唉,本来以为很快搞定,结果花了两个小时,自己还是太弱了,对python还是不够熟悉。

运行如下:

dzhwen@deng:~$ python find.py
请输入你要查找的单词(或者按CTRL+D或CTRL+C退出):banana n. 香蕉; 芭蕉属植物; 喜剧演员
网络释义: 香蕉; 香蕉甜酒; 喷鼻蕉; 芭蕉属植物 请输入你要查找的单词(或者按CTRL+D或CTRL+C退出):orange n. 桔子,橙子; [植]桔树; 橙色; 桔色
adj. 橙色的; 橘色的; 桔红色的
网络释义: 桔色; 橙色的; 桔黄; 橙 请输入你要查找的单词(或者按CTRL+D或CTRL+C退出):
退出。

转载请注明出处:http://www.cnblogs.com/sysu-blackbear/谢谢!

python制作查找单词翻译的脚本的更多相关文章

  1. Python制作有道翻译小工具

    该工具主要是利用了爬虫,爬取web有道翻译的内容. 然后利用简易GUI来可视化结果. 首先我们进入有道词典的首页,并点击翻译结果的审查元素 之后request响应网页,并分析网页,定位到翻译结果. 使 ...

  2. python制作一键启动脚本

    我们的系统环境或许没有Python环境,又想使用脚本,这就要使该脚本能脱离Python环境独立运行,比如说将该脚本打包成exe可执行文件等.那么怎么做呢?你可能想到py2exe和pyinstaller ...

  3. 使用python制作ArcGIS插件(3)ArcPy的使用说明

    使用python制作ArcGIS插件(3)ArcPy的使用说明 by 李远祥 ArcPy 是一个以成功的 arcgisscripting 模块为基础并继承了 arcgisscripting 功能进而构 ...

  4. python使用百度api翻译中英文

    python使用百度api翻译中英文 写程序取变量名的时候,常常需要翻译单词,或者将中文翻译成英语.有道词典,必应词典都很好,可是...命令行习惯了还是觉得用在cmd里面调出程序使用起来也许会更爽.于 ...

  5. 使用python制作ArcGIS插件(5)其他技巧

    使用python制作ArcGIS插件(5)其他技巧 by 李远祥 使用python做插件开发,除了了解ArcToolBox工具之外,还需要在了解ArcPy的相关函数和接口.只有掌握了这些,才可以顺利的 ...

  6. 使用python制作ArcGIS插件(2)代码编写

    使用python制作ArcGIS插件(2)代码编写 by 李远祥 上一章节已经介绍了如何去搭建AddIn的界面,接下来要实现具体的功能,则到了具体的编程环节.由于使用的是python语言进行编程,则开 ...

  7. 使用python制作ArcGIS插件(1)工具介绍

    使用python制作ArcGIS插件(1)工具介绍 by 李远祥 ArcGIS从10.0开始支持addin(ArcGIS软件中又叫作加载项)的方式进行插件制作.相对于以往9.x系列,addin的无论是 ...

  8. python制作pdf电子书

    python制作pdf电子书 准备 制作电子书使用的是python的pdfkit这个库,pdfkit是 wkhtmltopdf 的Python封装包,因此在安装这个之前要安装wkhtmltopdf 安 ...

  9. 使用python制作时间戳转换工具

    使用python制作时间戳转换工具 python 时间戳转日期 日期转时间戳 前言:作为一个程序员一般情况下,json和时间戳是常用的两个工具,我咨询过很多个朋友,他们一般都是通过在线工具对json进 ...

随机推荐

  1. python 游戏(井字棋)

    1. 游戏思路和流程图 实现功能,现实生活中的井字棋玩法 游戏流程图 2. 使用模块和游戏提示 import random def game_info(): print('欢迎来到井字棋游戏') pr ...

  2. CEPH LIO iSCSI Gateway

    参考文档: Ceph Block Device:http://docs.ceph.com/docs/master/rbd/ CEPH ISCSI GATEWAY:http://docs.ceph.co ...

  3. MySQL——约束(constraint)详解

    该博客说说关于数据库中一个重要的知识点——约束 一.什么是约束约束英文:constraint 约束实际上就是表中数据的限制条件 二.约束作用表在设计的时候加入约束的目的就是为了保证表中的记录完整和有效 ...

  4. Redis学习笔记之入门基础知识——简介

    非关系型数据库,存储的数据类型:字符串(STRING).列表(LIST).集合(SET).散列表(HASH).有序集合(ZSET) 持久化:时间点转储(point-in-time-dump)(快照). ...

  5. Daily Scrum NO.8

    工作概况 今天是周六,虽然由于工作紧张要求这一日也定为工作日,但是也许是因为昨日大家工作做得较多或者周末的缘故,今天的进展状况并不理想.线程池和异常清理器的后端已经完成,而清理器的界面和动态爬取仍旧没 ...

  6. C/C+ 感触

    1.       C/C++语言开发的首选利器- C++Test       以前在windows平台下的开发,使用的框架主要是MFC,以及console工程(基于win32SDK),属于纯C/C++ ...

  7. 对于beta发布的评论

    第一组:新蜂小组 题目:俄罗斯方块 评论:主体功能已经完成,可以流畅的进行游戏,看项目的完成度是最高的.他们不但把核心功能做出来了,界面也已基本完成. 第二组:Nice团队 题目:约跑APP(约吧) ...

  8. Mac安装Appium的Android环境

    1.下载android sdk http://down.tech.sina.com.cn/page/45703.html   2.解压,配置环境变量   ANDROID_HOME=/Users/wp/ ...

  9. 【大数据】SparkStreaming学习笔记

    第1章 Spark Streaming概述 1.1 Spark Streaming是什么 Spark Streaming用于流式数据的处理.Spark Streaming支持的数据输入源很多,例如:K ...

  10. Cat VS Dog HDU - 3829 (最大独立集 )

    Cat VS Dog Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 125536/65536 K (Java/Others)Total ...