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 には多くの解析モジュールがあります。

このパーサーを使用する場合に備えて、パーサーからの戻り値の説明をコメントとして残しました。これは、Web ページのテキストを機械翻訳するために使用するライブ プログラムから抽出したものです。

LWP からの返品のステータスと内容の確認に関する上記のコメントも非常に賢明です。ウェブサイトがオフラインの場合は、そのことを知っておく必要があります。

open( 私の $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 に答える