使用Perl5获取有道词典释义
Get Word Definition from dict.youda.com
via Perl Script
获取基本释义
Get Basic Definition
http://dict.youdao.com/fsearch?q=
abstain&doctype=json&xmlVersion=3.2&Version=1.2
- ** q ** 要查的单词或词组
- 只能返回xml格式的,xmlVersion不同会有不同
或者使用
linux命令行下翻译工具
但是没有网页版获取的全
所以那就提取页面文字呗
#!/usr/bin/perl
use utf8;
use v5.18.2;
binmode STDOUT, 'utf8';
binmode STDERR, 'utf8';
use Web::Query;
use HTML::Entities;
my $ok;
my $saveDir = '/Users/ruili/Code/Perl5/word';
my $word = $ARGV[0];
if ( -f "$saveDir/".$ARGV[0] && ! -z "$saveDir/".$ARGV[0] ) {
#如果文件不为空
say "$ARGV[0]已经存在了";
exit;
}
open OUT, ">$saveDir/".$ARGV[0] or die "Write out Die\n";
binmode OUT, 'utf8';
my $desc = wq("http://dict.youdao.com/w/eng/".$word."/#keyfrom=dict2.index");
# 是否有柯林斯解释
my $ok = ${$desc->find("#collinsResult")->{trees}}[0];
if (! $ok){
#没有柯林斯
say STDERR "没有柯林斯词典";
}else{
# 获取柯林斯解释
say OUT "\n##########柯林斯英汉词典##########\n";
my $collinsDesc = $desc->find('#collinsResult')->find('.ol');
$collinsDesc->find('.collinsMajorTrans')
->each(sub{
my ($i,$elem) = @_;
$elem = $elem->html();
$elem =~ s|</?[^<>]+>||g;
$elem =~ s|\n||g;
say OUT "$elem";
});
$collinsDesc->find('.exampleLists')
->each(sub{
my ($i,$elem) = @_;
$i++;
$elem = $elem->html();
$elem =~ s|</?[^<>]+>||g;
$elem =~ s|\n||g;
say OUT decode_entities($elem);
});
say STDERR "柯林斯英汉词典 OK";
}
# 是否有21世纪解释
$ok = ${$desc->find("#authDictTrans")->{trees}}[0];
if (! $ok){
#没有这个元素
say STDERR "没有21世纪大英汉词典";
}else{
# 获取21世纪大英汉词典
say OUT "\n##########21世纪大英汉词典##########\n";
my $enzh21 = $desc->find("#authDictTrans");
my $ol = $enzh21->find('.ol.wordGroup');
$ok = ${$ol->{trees}}[0];
if(!$ok){
say STDERR "没有";
}else{
$enzh21->find('.ol.wordGroup .wordGroup')->each(sub{
my ($i,$elem) = @_;
$elem = $elem->html();
$elem =~ s|</[a-zA-Z]+>|\n|g;
$elem =~ s|</?[^<>]+>||g;
$elem =~ s|\n{2,}|\n|g;
say OUT decode_entities("$i: $elem");
});
say STDERR "21世纪大英汉词典 OK";
}
$enzh21->find('ul .wordGroup')->each(sub {
my ($i,$elem) = @_;
$elem = $elem->html();
$elem =~ s|</[a-zA-Z]+>|\n|g;
$elem =~ s|</?[^<>]+>||g;
$elem =~ s|\n{2,}|\n|g;
say OUT decode_entities("$i: $elem");
});
}
# 是否有网络解释
$ok = ${$desc->find("#tWebTrans")->{trees}}[0];
if (! $ok){
#没有这个元素
say STDERR "没有网络释义";
}else{
say STDERR "网络释义 OK";
say OUT "\n##########网络释义##########";
#有词条
my $web = $desc->find("#tWebTrans");
$web->find(".wt-container .title")->each(sub {
my ($i,$elem) = @_;
$elem = $elem->html();
$elem =~ s|</?[^<>]+>||g;
$elem =~ s|\n{2,}|\n|g;
$i++;
say OUT decode_entities("$i: $elem");
});
#短语
say OUT "\n###短语###";
$web->find("#webPhrase .wordGroup")->each(sub {
my ($i,$elem) = @_;
$elem = $elem->html();
$elem =~ s|</?[^<>]+>||g;
$elem =~ s|\n{2,}|\n|g;
$i++;
say OUT decode_entities("$i: $elem");
});
}
效果
##########柯林斯英汉词典##########
1. ADJ Someone who is abstemious avoids doing too much of something enjoyable such as eating or drinking. 有节制的 [正式]
##########21世纪大英汉词典##########
0: (尤指在饮食方面)(人)有度的,有节制的,适度的
1: (生活等)以节制为特点的
2: (饮食等)简单而有节制的;节俭的,节省的
0: adj.
(尤指在饮食方面)(人)有度的,有节制的,适度的
(生活等)以节制为特点的
(饮食等)简单而有节制的;节俭的,节省的
1: adj.
2: (尤指在饮食方面)(人)有度的,有节制的,适度的
(生活等)以节制为特点的
(饮食等)简单而有节制的;节俭的,节省的
3: (尤指在饮食方面)(人)有度的,有节制的,适度的
4: (生活等)以节制为特点的
5: (饮食等)简单而有节制的;节俭的,节省的
##########网络释义##########
1: 有节制的
2: 节俭的
3: 节制的
4: 节约的
###短语###
1: abstemious a 有节制的
2: abstemious area 温带
3: abstemious society 节约型社会
4: abstemious meals 适度的吃
5: abstemious style 节约型
6: abstemious habits 节制饮食的习惯
7: building abstemious society 构建节约型社会
8: an abstemious diet 节俭的饮食 ; 饮食有度
9: be abstemious in drinking 节制饮酒
使用Perl5获取有道词典释义的更多相关文章
- 必应词典手机版(IOS版)与有道词典(IOS版)之软件分析【功能篇】【用户体验篇】
1.序言: 随着手机功能的不断更新和推广,手机应用市场的竞争变得愈发激烈.这次我们选择必应词典和有道词典的苹果客户端作对比,进一步分析这两款词典的客户端在功能和用户体验方面的利弊.这次测评的主要评测人 ...
- Mac上的欧路词典单词本迁移到有道词典 #node.js
摘要 有道词典提供了柯林斯和朗文辞典,加上最近在背单词且Mac版的屏幕取词也够用了,为了云单词本的同步,决定抛弃Mac上的欧路词典.单词欧路上的单词本也存了一百多个单词.怎样迁移到有道呢? 关键词:n ...
- bing词典vs有道词典对比测试报告——功能篇之细节与用户体验
之所以将细节与用户体验放在一起讨论,是因为两者是那么的密不可分.所谓“细节决定成败”,在细节上让用户感受方便.舒适.不费心而且温馨,多一些人文理念,多一些情怀,做出来的产品自然比其他呆板的产品更受欢迎 ...
- 基于pygtk的linux有道词典
基于pygtk的linux有道词典 一.桌面词典设计 想把Linux用作桌面系统,其中一部分障碍就是Linux上没有像有道一样简单易用的词典.其实我们完全可以自己开发一款桌面词典, 而且开发一款桌面词 ...
- Teamwork-Week2真对必应词典和有道词典的软件分析和用户需求调查(桌面版)
经调查,现在有道词典在该领域拥有很大程度的市场占有率,所以我们将有道词典与必应词典进行对比. 核心功能一:单词本 有道词典中的单词本都只能是由用户手动添加不会的单词,而必应词典中的单词 不仅可以被自己 ...
- 【milonga】什么意思_英语milonga在线翻译_有道词典
[milonga]什么意思_英语milonga在线翻译_有道词典 milonga 网络释义英英释义 米隆加 本届探戈艺术节表演最受观众欢迎的是热情欢快的米隆加(Milonga)舞曲探戈,为了吸引年 ...
- Python下载一张图片与有道词典
1.下载一张图片代码1 import urllib.request response = urllib.request.urlopen('http://photocdn.sohu.com/201009 ...
- 谷歌浏览器慎用有道词典插件(<audio></audio>) (转载)
谷歌浏览器慎用有道词典插件(<audio></audio>) 原文 :http://blog.csdn.net/u010556394/article/details/7112 ...
- python "爬虫+有道词典"实现一个简单翻译程序
抓包软件使用的是Fiddler4 新版的查询接口 比较负责,引入了salt和sign http://fanyi.youdao.com/translate?smartresult=dict&sm ...
随机推荐
- E: 软件包*需要重新安装,但是我无法找到相应的安装文件。(ubuntu14.04)
ubuntu安装搜狗输入法官方下载的安装包时,电脑有点卡我给强制关闭了,然后重启打开软件管理中心,直接闪退! 之后不能安装任何软件(包括命令). 显示: E: 软件包Sougou Pinyin需要重新 ...
- 发布自己的nuget包;报错source parameter was not specified
16-10-27 VS下使用 程序包管理器控制台 运行: 1.cd 命令走到 工程文件夹下,使用 ls 命令查看当前目录: 2. 使用 nuget spec 创建: 3. 使用 nuget pack ...
- iOS开发——XML/JSON数据解析
NSJSONSerialization 接下来就正式开始.苹果官方给出的解析方式是性能最优越的,虽然用起来稍显复杂. 首先我们在上面已经有了我希望得到的信息的网站的API给我们的URL,在OC中,我要 ...
- 【转】Java多线程编程中易混淆的3个关键字( volatile、ThreadLocal、synchronized)总结
概述 最近在看<ThinKing In Java>,看到多线程章节时觉得有一些概念比较容易混淆有必要总结一下,虽然都不是新的东西,不过还是蛮重要,很基本的,在开发或阅读源码中经常会遇到,在 ...
- svn合并
1.先去 aone里我的变更 里 重建 新分支 相当于重主干上拉代码下来2.然后再去 原来的分支里 swich切换到新分支3.在原来的分支里 merge 到新分支的url4.选择最早的 version ...
- java io读书笔记(5) Writing Bytes to Output Streams
outputstream类是所有的字符输出类的父类,他是一个抽象类. 对于OutputStream类来说,其最基础的方法就是:write(). public abstract void write(i ...
- 数dp多少个0-n多少0-9
#include <bits/stdc++.h> using namespace std; const int N = 15; int n; int dp[N][N][N]; int a[ ...
- Codeforce Round #211 Div2
真的是b到不行啊! 尼玛C题一个这么简单的题目没出 aabbccddee 正确的是aabccdee 我的是 aabcdee 硬是TM的不够用,想半天还以为自己的是对的... A:题... B:题. ...
- [转]怎样解决Myeclipse内存溢出?
在用myeclipes10 开发 遇到了 内存溢出问题,百度了很久,这篇比较完善. 总结起来三个方面去检查 1)myeclipes的配置:myeclipes 10 的安装路径下 的myeclipse. ...
- VS2010程序打包
今天,小白就来给各位做个打包的新手教程,此文仅是为了记录自己的学习过程与方便其他初次接触的打包的朋友们总结一下,希望大家能够受用.废话不多说,下面我们就来讲解下打包工程.首先,在项目中添加一个安装项目 ...