海词客户端简化版

嫌在浏览器里用海词太麻烦,写了个Perl脚本来提取单词的解释。使用时把单词通过参数送进去就OK了。支持词组。查无此字时理论上不会有输出。

没有使用任何”高级”技术。通过LWP模块把网页弄下来,找到解释所在的位置,通过正则表达式提取出来就差不多了。本来想连例句一起弄出来,但只能做到一条例句的情况,如果例句多了只能显式第一条。如何完美的显式所有例句,还需要再想办法。

!/usr/bin/perl -w

use utf8;

use Encode;

use LWP::Simple;

if ($#ARGV == 0) {

$word = $ARGV[0];

} else {

$word = shift @ARGV;

foreach $arg (@ARGV) {

    $word .= "-" . $arg;

}

}

my $url = "http://dict.cn/" . $word . ".htm";

my $content = decode("gbk", get $url);

@lines = split /\n/, $content;

$meaning = $lines[79];

if ($meaning =~ /(.*)<\/strong>/) {

$_ = $1;

s/<br \/>/\n/g;

print encode("utf8", $_) . "\n";

}

注:发芽网导出的HTML似乎和我的blog有点冲突,因此上面的代码有些许不正常,请上发芽网上看正确的代码。

3 comments

  1. […] 继续上篇文章,紧天吃午饭的时候觉得那里说的两种方向都不太容易解决。Python的那个最诡异,实在不知道是哪里的问题,而且Python那个脚本,用了几个库,好像我目前手上能用的虚拟主机上(Dreamhost和SDF)都没有;Bash的那个,我实在是不想把目前的宝贵时间花在学习一门新语言上。然后就想到了我过去最喜欢的Perl,既然它被称为是一门“粘合语言”,应该在里面可以直接调用yegle写的wget语句,而且前两天用Perl写过海词客户端简化版,里面就用了正则表达式来处理了HTML。相对与海词的那个排版混乱的HTML输出,Twitter给的XML可简单清晰多了。 […]

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注