Perl 如何在网页中搜索字符串并打印搜索字符串所在的整行?

Perl 如何在网页中搜索字符串并打印搜索字符串所在的整行?,perl,Perl,我是编程新手,也学习perl 我的问题是:如何在网页中搜索字符串并打印出搜索字符串所在的完整行 是否可以直接查找/点击该字符串,然后打印搜索字符串所在的完整行?我们需要强制使用XPath吗?如果它只是一个非常基本的字符串,您可以使用它和一个小的正则表达式,如下所示: use LWP::Simple; my $doc = get('http://stackoverflow.com/q/11771655/479133') || die "GET failed"; foreach my $line

我是编程新手,也学习perl

我的问题是:如何在网页中搜索字符串并打印出搜索字符串所在的完整行


是否可以直接查找/点击该字符串,然后打印搜索字符串所在的完整行?我们需要强制使用XPath吗?

如果它只是一个非常基本的字符串,您可以使用它和一个小的正则表达式,如下所示:

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上有无数的模块可以做这些事情。如果您需要“更大”的东西,请查看。并且可以使用:

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

你可能把事情复杂化了。虽然您通常肯定会使用HTML解析器来处理HTML,但在本例中,问题是“搜索字符串所在的整行”。在这种情况下,正确的答案是在换行符上拆分输入并搜索单独的行。