我是新手編程,也是學習perl的。如何在網頁中搜索字符串並打印出包含搜索字符串的完整行?
這是我的問題:如何搜索網頁中的字符串並打印出搜索字符串所在的完整行?
是否可以直接找到/命中該字符串,然後打印出包含搜索字符串的完整行?我們是否需要爲此使用xpaths強制?
我是新手編程,也是學習perl的。如何在網頁中搜索字符串並打印出包含搜索字符串的完整行?
這是我的問題:如何搜索網頁中的字符串並打印出搜索字符串所在的完整行?
是否可以直接找到/命中該字符串,然後打印出包含搜索字符串的完整行?我們是否需要爲此使用xpaths強制?
如果只是你正在尋找可以使用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。
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";
}
}
你可能會過於複雜這一點。雖然你一定會使用HTML解析器來處理HTML,但在這種情況下,問題是「存在搜索字符串的完整行」。在這種情況下,正確的答案是將新輸入分割並搜索各行。 – 2012-08-02 10:09:19