博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Perl5获取有道词典释义
阅读量:6615 次
发布时间:2019-06-24

本文共 3850 字,大约阅读时间需要 12 分钟。

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不同会有不同

或者使用

但是没有网页版获取的全

所以那就提取页面文字呗

#!/usr/bin/perluse 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|
|\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|
|\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 节制饮酒

转载于:https://www.cnblogs.com/raybiolee/p/5641612.html

你可能感兴趣的文章
JUnit单元测试
查看>>
[logstash-input-file]插件使用详解
查看>>
植物大战僵尸
查看>>
原创文章
查看>>
理解JavaScript私有作用域
查看>>
BZOJ 1012: [JSOI2008]最大数maxnumber【线段树单点更新求最值,单调队列,多解】
查看>>
Drupal 7模板(主题钩子)的建议
查看>>
nginx配置文件中location说明
查看>>
连载-第1章绪论 1.1嵌入式系统概述
查看>>
UltraVNC
查看>>
详解synchronized
查看>>
Spring Cloud第二篇 创建一个Eureka Server
查看>>
初探数据双向绑定
查看>>
Webpack4 不深不浅的实践教程
查看>>
3分钟搞掂Set集合
查看>>
win10下安装Docker
查看>>
nginx1.9+做TCP代理(端口转发)
查看>>
HTML元素的默认CSS设置介绍
查看>>
CSS-图片不变形设置
查看>>
Git异常:fatal: could not create work tree dir 'XXX': No such file or directory
查看>>