在Perl中,你可以使用正則表達(dá)式來提取網(wǎng)頁數(shù)據(jù)。以下是一個(gè)簡單的示例,展示了如何使用Perl的內(nèi)置庫IO::Socket::INET來獲取網(wǎng)頁內(nèi)容,并使用正則表達(dá)式提取所需的數(shù)據(jù):
#!/usr/bin/perl
use strict;
use warnings;
use IO::Socket::INET;
# 設(shè)置監(jiān)聽地址和端口
my $server_address = '127.0.0.1';
my $server_port = '8080';
# 創(chuàng)建套接字
my $socket = IO::Socket::INET->new(
LocalHost => $server_address,
LocalPort => '8080',
Proto => 'tcp',
Reuse => 1,
Proto => 'http',
Reuse => 1,
) or die "無法創(chuàng)建套接字: $!\n";
# 綁定套接字
$socket->bind($server_address, $server_port);
# 監(jiān)聽連接
$socket->listen(5);
print "服務(wù)器正在監(jiān)聽端口 $server_port...\n";
# 接受來自客戶端的連接
my $client_address = "";
my $client_socket;
$socket->accept($client_socket);
# 獲取請(qǐng)求行數(shù)據(jù)
my $request = "";
$client_socket->recv($request, 1024);
print "接收到請(qǐng)求: $request\n";
# 關(guān)閉套接字
$client_socket->close();
$socket->close();
在這個(gè)示例中,我們創(chuàng)建了一個(gè)簡單的HTTP服務(wù)器,監(jiān)聽端口8080。當(dāng)客戶端連接到服務(wù)器時(shí),服務(wù)器會(huì)接收請(qǐng)求行數(shù)據(jù),然后使用正則表達(dá)式提取所需的數(shù)據(jù)。
要提取網(wǎng)頁數(shù)據(jù),你可以使用Perl的正則表達(dá)式庫MIME::Parse::HTML。首先,你需要安裝這個(gè)庫:
cpan MIME::Parse::HTML
然后,你可以使用以下代碼來提取網(wǎng)頁數(shù)據(jù):
#!/usr/bin/perl
use strict;
use warnings;
use MIME::Parse::HTML;
# 獲取網(wǎng)頁內(nèi)容
my $url = 'http://example.com';
my $html_content = get_html_content($url);
# 使用正則表達(dá)式提取數(shù)據(jù)
my $title = "";
if ($html_content) {
$title =~ s/<title>(.*?)<\/title>/$1/gi;
print "網(wǎng)頁標(biāo)題: $title\n";
} else {
print "無法獲取網(wǎng)頁內(nèi)容\n";
}
sub get_html_content {
my $url = shift;
my $content = "";
# 使用LWP::UserAgent獲取網(wǎng)頁內(nèi)容
my $ua = LWP::UserAgent->new;
my $response = $ua->get($url);
if ($response->is_success) {
$content = $response->decoded_content;
} else {
print "獲取網(wǎng)頁失敗: ", $response->status_line, "\n";
}
return $content;
}
在這個(gè)示例中,我們使用MIME::Parse::HTML庫的get_html_content
函數(shù)獲取網(wǎng)頁內(nèi)容,然后使用正則表達(dá)式提取標(biāo)題。你可以根據(jù)需要修改正則表達(dá)式來提取其他數(shù)據(jù)。