2012-05-16 11 views
0

페이지에 특정 단어가 포함되어 있는지 확인하려면 어떻게합니까? 예 : 페이지에 "candybar"라는 단어가 포함되어 있으면 true 또는 false를 반환하고 싶습니다. "캔디 바 (candybar)"는 때로는 태그 (캔디 바) 사이에있을 수도 있고 때로는 그렇지 않을 수도 있습니다. 어떻게해야합니까? 여기 페이지에 특정 단어가 포함되어 있는지 확인하십시오.

사이트 (바로 사이트를 통해 확인하는 방법을 지금 그나마) "을 grabing"내 코드입니다 :

#!/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!"; 
} 
+1

실행하면 어떻게됩니까? – Ilion

+0

귀하의 요청이 성공적이었고 기대했던 내용을 가지고 있는지 먼저 확인하는 것이 좋습니다. – ArtM

+0

이것은 프로그램의 헤드에서'use strict'와'use warnings '을 빠뜨린 것 외에는 나에게 좋을 것 같다. (도움을 요청하기 전에이 두 가지를 모두 포함하는 것이 예의입니다.)'$ simplePage를 정의했거나 죽을 것 '이라는 줄을 제안합니다.'get' 호출 후에 URL을 얻을 수 없습니다. 이 프로그램에 어떤 문제가 있습니까? – Borodin

답변

1

당신이 파서의 어떤 종류를 사용하는 것이 당신이 찾고 있다면 내가 좋을 것 HTML 또는 알려진 방식으로 태그가 지정된 다른 단어 [예 : XML]. HTML :: Tokeparser를 사용하지만 CPAN에는 많은 구문 분석 모듈이 있습니다.

이 구문 분석기를 사용하는 경우를 대비해 파서의 반환에 대한 설명을 주석으로 남겨 두었습니다. 이것은 웹 페이지의 텍스트를 기계로 번역하는 데 사용하는 라이브 프로그램에서 추출한 것이므로 일부 조각을 추출했습니다.

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/) { 

    } 
관련 문제