私はプログラミングが初めてで、perlも学習しています。
これが私の質問です: Web ページで文字列を検索し、検索文字列が存在する行全体を印刷するにはどうすればよいですか?
その文字列を直接検索/ヒットして、検索文字列が存在する行全体を出力することは可能ですか? これには xpaths 強制を使用する必要がありますか?
私はプログラミングが初めてで、perlも学習しています。
これが私の質問です: Web ページで文字列を検索し、検索文字列が存在する行全体を印刷するにはどうすればよいですか?
その文字列を直接検索/ヒットして、検索文字列が存在する行全体を出力することは可能ですか? これには xpaths 強制を使用する必要がありますか?
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";
}
}
探しているのが非常に基本的な文字列である場合は、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をご覧ください。