微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Perl 黑客编程

九.LWP模块

LWP ("Library for WWW in Perl" 的缩写) 是一个由多个模块组成,主要用来获取网络数据的一个模块组。LWP包含有许多模块,通过它我们就可编写perl脚本来访问外部的WEB服务器上的资源了,关于LWP各模块的更多信息可以访问以下地址获得:
这里我们只讲LWP::Simple和LWP::UserAgent这两个模块。
 
(1)LWP::Simple
 
LWP::Simple是LWP的一个简单程序接口,它主要有以下函数
■     get($url) — 获取指定URL地址的网页内容,如果没有发生错误,get 函数返回此网页,
否则,返回undef。
■    head($url) — 获取指定URL地址页面头信息,如果成功则返回($content_type,$document_length,$modified_time,$expires,$server)五个变量值,即依次为内容类型,文档长度,最后更新时间,过期时间和服务器名称
■   getprint($url) — 获取输出指定URL地址的网页内容,它返回一个状态号,比如成功将返回200,文件没有找到将返回404
■     getstore($url,$file) — 获取指定URL地址的网页内容并保存在文件$file中,返回值为也是状态号。
例如:
use LWP::Simple;
$a=getprint('http://www.baidu.com');
print "/n";
print $a;
print "/n";
my ($b,$c,$d,$e,$f)=head('http://www.baidu.com');
print "$b"."/n"."$c"."/n"."$d"."/n"."$e"."/n"."$f";
getstore('/Article/UploadFiles/200912/20091219145544327.jpg');      
system('riusksk.jpg');      #打开图片
sleep(5);                #延时5秒
unlink('riusksk.jpg');      #删除图片
输出结果如下:
D:/软件>perl riusksk.pl
<html><head><Meta http-equiv=Content-Type content="text/html;charset=gb2312"><ti
tle>百度一下,你就知道      </title><style>body{margin:4px 0}
…………省略部分内容
<p style=height:30px><a onClick="this.style.behavior='url(#default#homepage)';th
is.setHomePage('http://www.baidu.com')" href=http://utility.baidu.com/traf/click
.PHP?id=215&url=http://www.baidu.com>把百度设为主页</a></p><p style=height:14px>
<a href=http://e.baidu.com>加入百度推广</a> | <a href=http://top.baidu.com>搜索
风云榜</a> | <a href=http://home.baidu.com>关于百度</a> | <a href=http://ir.baid
u.com>About Baidu</a></p><p id=b>&copy;2009 Baidu <a href=http://www.baidu.com/d
uty/>使用百度前必读</a> <a href=http://www.miibeian.gov.cn target=_blank>京ICP证
030173号</a> <img src="http://www.toolmao.com/rticle/UploadFiles/200912/20091219145546669.gif></p><map name=mp><area sh
ape=rect coords="43,22,227,91" href=http://hi.baidu.com/baidu/ target=_blank tit
le="点此进入 百度空间"></map></center></body>
…………省略部分内容
</html><!--0e94a8fd6438cdd2-->
200
text/html;charset=gb2312
3520
 
1256476657
BWS/1.0
然后打开下载的图片riusksk.jpg,接着停顿5秒后,再将图片删除
 
(2)LWP::UserAgent
 
相对LWP::Simple模块而言,LWP::UserAgent模块更为复杂,功能也更为强大。它相当于一个虚拟的浏览器,使用时先创建一个LWP::UserAgent对象,然后再设置其相关参数,接着再创建HTTP::Request实例,并发送请求,最后返回HTTP::Response对象。关于该模块更多的信息可参考以下网址:
首先我们创建一个HTTP用户代理对象:
use LWP::UserAgent;
$user_agent = new LWP::UserAgent;
接着,我们再利用HTTP模块创建一个HTTP请求,请求方式可以为GET或者POST:
$request = new HTTP::Request('GET','http://www.baidu.com');
还可以采用代理的方式执行HTTP请求:
$response = $user_agent->request($request);
例如以下代码
use LWP::UserAgent;
$user_agent = new LWP::UserAgent;
$request = new HTTP::Request('GET','http://www.baidu.com');
$response = $user_agent->request($request);
open fp,">file.txt";
print fp $response->{_content};
close fp;
执行结果如下:
D:/软件>perl riusksk.pl
 
D:/软件>type file.txt
<html><head><Meta http-equiv=Content-Type content="text/html;charset=gb2312"><ti
tle>百度一下,你就知道      </title><style>body{margin:4px 0}p{margin:0;padding:
……省略部分内容
 ('load',function(){w.focus()},true)};window.onunload=function(){};</script></htm
l><!--0e94a8fd6438cdd2-->

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐