python实现查有道词典
因为要考英语四级,所以我今天一大早就起来被英语单词,但是作为英语渣渣的我,只能是在网页上挨个查单词的意思。查的多了,心生厌倦,便想着如何才能在终端下查单词,那样速度不就很快了?
NOW,我仔细观察每次查询时,浏览器地址栏中URL的变化,发现每次浏览器提交的URL都是"http://www.youdao.com/w/eng/"xxxxx"/#keyfrom=dict2.index"(其中的xxxxx代表要查的单词),有了这个发现,那我们将URL指向的网页下载下来,然后提取我们需要的信息不就得了?
这个工作交给Python来做是最合适不过的了
因为要英汉互译,所以我写了两段代码,第一个是汉译英,第二个是英译汉。(最后将两段代码合起来实现自动识别英语或汉语,但是正确性和效率比分开写差那么一点点,不过大多数时间我还是查英语的汉语意思)
源代码
汉译英:
import requests,re
def download(): word=input("请输入您要翻译的中文词语:\n") url="http://dict.youdao.com/w/eng/"+word+"/#keyfrom=dict2.index" #合并URL地址 html=requests.get(url).content.decode('utf-8') #得到服务器的相应信息后将其转码为UTF-8 return html def analysis(): list1=re.findall("详细释义.+<p class=\"collapse-content\">",download(),re.S) #这里对html字符串进行第一步加工,截取大概的信息 list2=re.findall(" [a-zA-Z ]+",str(list1)) #将上面加工后的字符串进一步加工,直接提取到所有翻译后的单词信息 print("翻译结果:\n") for i in list2: i=i.strip() #因为第二步加工后的信息并不干净,得到的单词前面会有空格,这里将空格删去 print(i) if __name__ == '__main__': while(1):
analysis()
英译汉:
import requests,re def download(): word=input("请输入您要翻译的英文单词:\n") url="http://dict.youdao.com/w/eng/"+word+"/#keyfrom=dict2.index" html=requests.get(url).content.decode('utf-8') return html def analysis(): list1=re.findall("详细释义.+<p class=\"collapse-content\">",download(),re.S) list2=re.findall(" \w+",str(list1)) #只有此处代码与汉译英代码不同,因为是提取汉字,所以这里要用\w来匹配汉字 print("翻译结果:\n") for i in list2: i=i.strip() print(i) if __name__ == '__main__':
while(1):
analysis()
合并后:
import requests,re def analysis(): word=input("请输入您要翻译的内容: ") url="http://dict.youdao.com/w/eng/"+word+"/#keyfrom=dict2.index" html=requests.get(url).content.decode('utf-8') print("翻译结果:") if ord(word[0].lower()) in range(97,123): #将输入的第一个字节转换为数字,如果数字的值在97到123之间输入的一定是英语,否则输入的是汉语 result=re.findall(r"(?<= )\w+(?=</span>)",html) #匹配翻译后的汉语 for i in result: print(i) else: result=re.findall(r"(?<= )[a-zA-Z ]+(?=</span>)",html) #匹配翻译后的英语 for i in result: if ord(i[0].lower()) in range(97,123): #上一步提取到的信息列表中有无用项(正则表达式中的空格造成的),这里过滤一下 print(i) if __name__ == '__main__': while(1): analysis()
OK,来看看效果吧:
emmmm,OK,发完博客还要继续背单词【伤心】【伤心】【伤心】
python实现查有道词典的更多相关文章
- python学习笔记:"爬虫+有道词典"实现一个简单的英译汉程序
1.有道的翻译 网页:www.youdao.com Fig1 Fig2 Fig3 Fig4 再次点击"自动翻译"->选中'Network'->选中'第一项',如下: F ...
- python:爬虫1——实战(下载一张图片、用Python模拟浏览器,通过在线的有道词典来对文本翻译)
一.下载一只猫 import urllib.request response = urllib.request.urlopen("http://cdn.duitang.com/uploads ...
- Python下载一张图片与有道词典
1.下载一张图片代码1 import urllib.request response = urllib.request.urlopen('http://photocdn.sohu.com/201009 ...
- python "爬虫+有道词典"实现一个简单翻译程序
抓包软件使用的是Fiddler4 新版的查询接口 比较负责,引入了salt和sign http://fanyi.youdao.com/translate?smartresult=dict&sm ...
- 基于pygtk的linux有道词典
基于pygtk的linux有道词典 一.桌面词典设计 想把Linux用作桌面系统,其中一部分障碍就是Linux上没有像有道一样简单易用的词典.其实我们完全可以自己开发一款桌面词典, 而且开发一款桌面词 ...
- mac 10.9开启有道词典取词功能
取词时候,有道词典给出提示,说要去开启辅助功能,但提示的是在mac 10.8上面怎么操作,在10.9的话,就是以下位置去改了. 补充以下: 在mac机器上,实际上大多数的单词都能从自带的词典中查找到. ...
- 爬虫破解js加密(一) 有道词典js加密参数 sign破解
在爬虫过程中,经常给服务器造成压力(比如耗尽CPU,内存,带宽等),为了减少不必要的访问(比如爬虫),网页开发者就发明了反爬虫技术. 常见的反爬虫技术有封ip,user_agent,字体库,js加密, ...
- 必应词典手机版(IOS版)与有道词典(IOS版)之软件分析【功能篇】【用户体验篇】
1.序言: 随着手机功能的不断更新和推广,手机应用市场的竞争变得愈发激烈.这次我们选择必应词典和有道词典的苹果客户端作对比,进一步分析这两款词典的客户端在功能和用户体验方面的利弊.这次测评的主要评测人 ...
- 调用网易有道词典api
# -*- coding: utf-8 -*- #python 27 #xiaodeng #调用网易有道词典api import urllib import json class Youdao(): ...
随机推荐
- maven详解之结构
maven 父子关系 父项目中打包方式必须是pom 如 <packaging>pom</packaging>,父项目中使用<modules><module& ...
- Python in/not in --- if not/if + for...[if]...构建List+ python的else子句
区分几个容易出错的地方: in 成员运算符 - 如果字符串中包含给定的字符返回 True >>>"H" in a True not in 成员运算符 - 如果字符 ...
- web应用程序 前段部分调优
1. 使用瀑布图初步诊断网站性能瓶颈 一般来说,打开一个网页的速度会受到以下几项的影响: 1) 服务器花了太长的时间将.aspx页面的内容转化为html. 2) .aspx页面花了太长的时间从服务器端 ...
- Python面试题之生成器/迭代器
1.为什么要有生成器? 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个 ...
- webpack2使用ch9-处理模板文件 .html .ejs .tpl模板使用
1 目录展示 安装依赖 "ejs-loader": "^0.3.0","html-loader": "^0.4.5", ...
- 数据库表反向生成(一) MyBatis-generator与IDEA的集成
在Dao层,通过数据库表反向生成,可以节省我们很多的精力,把更多的精力投入复杂的业务中. 数据库表反向生成,指的是通过数据库如mysql中的库表schema生成dao层读写表的基础代码,包括model ...
- 一款低延迟的分布式数据库同步系统--databus
每次看到马路对面摩托罗拉的大牌子,都想起谷歌125亿美元收购摩托罗拉移动,后来又以29亿美元卖给联想的事情.谷歌所做的决策都比较考虑长远利益,在这串交易中,谷歌获得了摩托罗拉最有价值的几千项专利,稳健 ...
- Spring装配Bean之XML装配bean
在Spring刚出现的时候,XML是描述配置的主要方式,在Spring的名义下,我们创建了无数行XML代码.在一定程度上,Spring成为了XML的同义词. 现在随着强大的自动化配置和Java代码的配 ...
- windows将某个应用加入开机启动项的解决办法
找到计算机以下位置,将要加入开机启动项的程序的快捷方式直接Copy到该目录下,下次开机该程序则会自动启动 C:\Users\pc\AppData\Roaming\Microsoft\Windows\S ...
- Windows NT 之父 - David Cutler
David Cutler,大卫·卡特勒,一位传奇程序员,1988年去微软前号称硅谷最牛的内核开发人员,是VMS和Windows NT的首席设计师,被人们成为“操作系统天神”.他曾供职于杜邦.DEC等公 ...