2

私はプログラミングが初めてで、perlも学習しています。

これが私の質問です: Web ページで文字列を検索し、検索文字列が存在する行全体を印刷するにはどうすればよいですか?

その文字列を直接検索/ヒットして、検索文字列が存在する行全体を出力することは可能ですか? これには xpaths 強制を使用する必要がありますか?

4

2 に答える 2

5

LWP::UserAgentそしてHTML::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";
    }
}
于 2012-08-02T05:58:30.357 に答える
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をご覧ください。

于 2012-08-02T05:51:22.630 に答える