0

如何检查页面是否包含特定单词。示例:如果页面包含单词“candybar”,我想返回 true 或 false。请注意,“糖果条”有时可能在标签(糖果条)之间,有时则不在。我该如何做到这一点?

这是我“抓取”该网站的代码(只是现在不知道如何检查该网站):

#!/usr/bin/perl -w

use utf8;

use RPC::XML;
use RPC::XML::Client;
use Data::Dumper;
use Encode;
use Time::HiRes qw(usleep);

print "Content-type:text/html\n\n";

use LWP::Simple; 

$pageURL = "http://example.com"; 

$simplePage=get($pageURL);

if ($simplePage =~ m/candybar/) {   
 print "its there!";
}
4

1 回答 1

1

我建议您使用某种解析器,如果您正在寻找 HTML 中的单词或任何其他以已知方式 [例如 XML] 标记的内容。我使用 HTML::Tokeparser,但 CPAN 上有很多解析模块。

如果您使用此解析器,我已将解析器返回的解释保留为注释。这是从我用来机器翻译网页文本的实时程序中提取的,所以我取出了一些点点滴滴。

上面关于查看LWP退货状态和内容的评论也很明智,如果网站离线,你需要知道这一点。

打开(我的 $fh, "<:utf8", $file ) || die "无法打开 $file : $!";

my $p = HTML::TokeParser->new($fh) || die "Can't open: $!";

$p->empty_element_tags(1);    # configure its behaviour
# put output into here and it's cumulated
while ( my $token = $p->get_token ) {
    #["S",  $tag, $attr, $attrseq, $text]
    #["E",  $tag, $text]
    #["T",  $text, $is_data]
    #["C",  $text]
    #["D",  $text]
    #["PI", $token0, $text
    my ($type,$string) = get_output($token) ;             
    # ["T",  $text, $is_data] : rule for text
    if ( $type eq 'T' && $string =~ /^candybar/ ) {

    }
于 2012-05-17T08:16:58.167 回答