2012-08-02 97 views

回答

5

如果只是你正在尋找可以使用LWP::Simple和一個非常基本的串一個小的正則表達式是這樣的:

use LWP::Simple; 

my $doc = get('http://stackoverflow.com/q/11771655/479133') || die "GET failed"; 
foreach my $line (split("\n", $doc)) { 
    print $line and last if $line =~ m/Here's my query/; 
} 

有可在CPAN做這種事情了無數的模塊。如果你需要「更大」的東西,請看Task::Kensho::WebCrawling

4

LWP::UserAgentHTML::Parser可用於:

#!/usr/bin/env perl 

use strict; 
use warnings; 

use HTML::Parser; 
use LWP::UserAgent; 

my $ua = LWP::UserAgent->new; 
my $response = $ua->get('http://search.cpan.org/'); 
if (!$response->is_success) { 
    print "No matches\n"; 
    exit 1; 
} 

my $parser = HTML::Parser->new('text_h' => [ \&text_handler, 'dtext' ]); 
$parser->parse($response->decoded_content); 

sub text_handler { 
    chomp(my $text = shift); 

    if ($text =~ /language/i) { 
     print "Matched: $text\n"; 
    } 
} 
+1

你可能會過於複雜這一點。雖然你一定會使用HTML解析器來處理HTML,但在這種情況下,問題是「存在搜索字符串的完整行」。在這種情況下,正確的答案是將新輸入分割並搜索各行。 – 2012-08-02 10:09:19