Perl网络蜘蛛程序示例[转] z

本文介绍了一个使用Perl编写的简单网页抓取脚本,该脚本可以获取指定URL的内容,并从中提取链接和标题等信息。它利用了LWP模块进行HTTP请求,并通过正则表达式解析HTML。

#!C:/Perl/bin/perl.exe
#Fetch the contents of the fellow Url,Only for Three Level
#Power By:antsnet
#Email:antsnet@163.com


print "Content-type: text/html;charset=gb2312;/n/n";
     use LWP 5.64; # 载入较新版本的 LWP classes
     use CGI;
     my $cgi=new CGI;
     my $browser = LWP::UserAgent->new;
     my $count=0;

     #start function of getUrl
     sub getUrl{
     my $myurl=shift;


     #     $content 里是网页内容,下面是对此内容作些分析:
     getAnalyse(getContents($myurl),$myurl);
foreach $url(@hash_title){
        print     $url."/n";
}
}
#end of function of getUrl
#start of get robots.txt
sub getRobots{
        print getContents();
}
#end of get robots.txt
#<![start function of getContents;
sub getContents{
     my $myurl=shift;

     #if($myurl eq ""){
      # $myurl = "http://hi.baidu.com/antsnet";
     #}
     $myurl=($myurl eq "" ? "http://hi.baidu.com/antsnet":$myurl);
     # get request:
     #my $myurl = 'http://hi.baidu.com/antsnet';

     my $response = $browser->get( $myurl );
     die "Can't get $url -- ", $response->status_line
      unless $response->is_success;

     die "Hey, 我想要 HTML 格式而不是 ", $response->content_type
     unless $response->content_type eq 'text/html';
        # 或者任何其他的 content-type

     # 成功的话就对内容处理
     $contents= $response->content;
     return $contents;
}
#]>end function of getContents;

#<!--[分析页面链接和标题]-->
sub getAnalyse{
     my ($contents,$myurl)=@_;
     $myurl=($myurl eq "" ? "http://hi.baidu.com/antsnet":$myurl);
     while($contents=~ m/<a(.*?)href=(/"|/')(.*?)(/"|/')(.*?)>(.*?)<//a>/g){
          $exp_url=$3;      #3为URL
          $exp_title=$6;     #6为TITLE
          if($exp_url=~/(script|mailto:)/){ #去掉包含Mailto的链接
          }elsif($exp_url=~/http://///){
             $url=$exp_url;
          } elsif(substr($exp_url,0,1) eq "/"){
             $url="$myurl$exp_url";
             }else{
             $url="$myurl/$exp_url";
             }
          $hash_url[$i]=$url;
          $hash_title[$i]=$exp_title;
          $i++;
}
return ($hash_url,$hash_title);
}
#<!--[分析页面链接和标题]-->
getUrl($cgi->param("uri"));
#print $content;


<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值