perl的LWP模块简单介绍

评论2,186

一 LWP::Simple 功能

1. 如何在Perl中使用该模块?

[code lang="perl"]
use LWP::Simple;
[/code]

2. 如何获取一个页面内容?

[code lang="perl"]
my $content = get(’http://www.yahoo.com.cn’);
[/code]

get函数把从www.yahoo.com.cn上获取得页面内容全部赋给$content这个变量,如果获取失败将返回一个undef的值。

3. 如何获取头(Header)?

[code lang="perl"]
my (b, d, $e) = header(’http://www.yahoo.com.cn’);
[/code]

如果获取成功header函数将返回五个变量,$a-e分别代表内容类型,文档长度,最后更新的时间,过期和服务器名称。

4. 如何输出指定页面内容?

[code lang="perl"]
my $code = getprint(’http://www.yahoo.com.cn’);
[/code]

getprint将试图打印www.yahoo.com.cn的内容,然后返回一个状态号,比如成功将返回200,文件没有找到将返回404。

5. 如何把获取的内容保存到一个文件中?

[code lang="perl"]
my $code = getstore(’http://www.yahoo.com.cn’, ‘/path/file.html’);
[/code]

getstore将试图把获取的内容保存到第二个参数指定的文件中,返回一个状态号,状态号的形式如上。

6. 如何同步远程和本地文件?

[code lang="perl"]
my $code = mirror(’http://www.yahoo.com.cn’,'/path/file.html’);
[/code]

mirror函数将比较远程和本地文件的一致性,然后返回一个状态号,比如文件相同将返回304,如果本地文件同步成功将返回200。

7. 如何测试返回状态的正确性?

[code lang="perl"]
is_success($code)
is_error($code)
[/code]

is_success和is_error这两个函数可以传递一个状态号为参数,程序会判断返回的是否为成功状态。比如is_success(403)将返回假。

二 LWP::UserAgent 功能
1、取得页面头信息

[code lang="perl"]
#!/usr/bin/perluse strict;
use warnings;
use LWP::UserAgent;my $ua = LWP::UserAgent->new;
$ua->agent(’spider name’);
my $res = $ua->head(’http://www.yahoo.com.cn’);
foreach ($res->header_field_names) { print “$_: “, $res->header($_), “\n”;}
[/code]

2、获取指定页面

[code lang="perl"]
my $ua = LWP::UserAgent->new;
$ua->agent(’spider name’);
my $response = $ua->get(’http://www.yahoo.com.cn’);
[/code]

3、POST方式提交数据

[code lang="perl"]
use strict;
use warnings;
use LWP 5.64;
my $browser = LWP::UserAgent->new; my $word = ‘tarragon’; my $url = ‘http://www.altavista.com/sites/search/web’;
my $response = $browser->post( $url,
[ ‘q’ => $word, # the Altavista query string
‘pg’ => ‘q’, ‘avkw’ => ‘tgz’, ‘kl’ => ‘XX’,
]
);
die “$url error: “, $response->status_line
unless $response->is_success;
die “Weird content type at $url — “, $response->content_type
unless $response->content_type eq ‘text/html’;
[/code]

4、通过get方式提交数据

[code lang="perl"]
use URI;
my $url = URI->new( ‘http://us.imdb.com/Tsearch’ );
# makes an object representing the URL $url->query_form( # And here the form data pairs:
‘title’ => ‘Blade Runner’,
‘restrict’ => ‘Movies and TV’,
); my $response = $browser->get($url);
[/code]

三、HTTPS的支持

需要安装Crypt::SSLeay协议,以便支持加密传输。

命令行PPM下的安装:

ppm> install http://theoryx5.uwinnipeg.ca/ppms/Crypt-SSLeay.ppd

图形化下面的安装:

点击Edit->Preferences, Add Repository,添加http://theoryx5.uwinnipeg.ca/ppms/作为安装源。再选择Crypt-SSLeay即可。
测试代码:

[code lang="perl"]
use strict;
use warnings;
use LWP::UserAgent;my $url = ‘https://www.helsinki.fi/’;my $ua = LWP::UserAgent->new;
my $response = $ua->get( $url );$response->is_success or
die “Failed to GET ‘$url’: “, $response->status_line;
print $response->as_string;
[/code]

发表评论

匿名网友