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(): ...
随机推荐
- 【POJ】2115 C Looooops(扩欧)
Description A Compiler Mystery: We are given a C-language style for loop of type for (variable = A; ...
- 天上掉Pizza
天上掉Pizza 时间限制: 3 Sec 内存限制: 128 MB提交: 73 解决: 48[提交][状态][讨论版] 题目描述 明明喜欢Pizza,但总是缺钱.有一天,他在报纸上阅读,他最喜爱的 ...
- BZOJ-1010-[HNOI2008]玩具装箱toy(斜率优化)
Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1... ...
- Angular学习笔记(一)
本文为原创文章,转载请标明出处 目录 架构 模块 组件 模板 元数据 数据绑定 指令 服务 依赖注入 模板与数据绑定 1. 架构 模块 Angular 应用是模块化的,并且 Angular 有自己的模 ...
- jQuery插件:Ajax将Json数据自动绑定到Form表单
jQuery注册方法的两种常用方式: //jQuery静态方法注册 //调用方法$.a1() $.extend({ a1: function () { console.log("a1&quo ...
- python random从集合中随机选择元素
1.使用python random模块的choice方法随机选择某个元素 from random import choice foo = ['a', 'b', 'c', 'd', 'e'] print ...
- Spring事务管理配置示例
(一).Spring事务特性 1.事务隔离级别 隔离级别是指若干个并发的事务之间的隔离程度. ISOLATION_DEFAULT:默认值,使用数据库的默认隔离级别,就是ISOLATION_READ_C ...
- Java爬虫
作为一位Java爬虫的初学者,分享一下自己的心得.所用到的jar包 org.codehaus.jettison.jar jsoup-1.7.3.jar个人认为爬虫的实现机制:获取Docume对象-&g ...
- YYHS-NOIP模拟赛-mine
题解 这道题不难想到用dp来做 dp[i][0]表示第i个格子放0 dp[i][1]表示第i个格子放1且第i-1个格子放雷 dp[i][2]表示第i个格子放2 dp[i][3]表示第i个格子放1且第i ...
- Appium python自动化测试系列之移动自动化测试前提(一)
1.1 移动自动化测试现状 因为软件行业越来越发达,用户的接受度也在不断提高,所以对软件质量的要求也随之提高,当然这个也要分行业,但这个还是包含了大部分.因为成本.质量的变化现在对自动化测试的重视度越 ...