免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1934 | 回复: 1
打印 上一主题 下一主题

求助,请大家帮忙看看问题出在哪里? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-04 17:37 |只看该作者 |倒序浏览
我写了脚本,用来下载用网页形式的手册,就是说如果脚本名为down.pl,那么./down.pl http://book/index.html,就会把index及相关的网页全部下载到硬盘上。但我的脚本始终不能下载全部的网页。
[code]
#!/usr/bin/perl
#script for download html page.
#Author Huang Yong.
#2007-9-1

use File::Basename;
use File::Spec;

sub downloadpage{
    my $main_path = dirname($_[0]);
    getpage($_[0],$main_path);
   
}

sub catfile{
    $dirname = $_[0];
    $filename = $_[1];

    if($filename =~ m@^\./(.+)@){
       $filename = $1;

    }

    while($filename =~ m@^\.\./(.+)@){
        $dirname = dirname($dirname);
        $filename = $1;
    }
    my $re = File::Spec->catfile($dirname,$filename);
    $re =~ s@http:/@http://@;
    return $re;
}

sub getpage{
    my $filename;
    my $str=$_[1];
    my $pageurl = $_[0];
    my $main_path=$_[1];
    $str=~s/\./\\./g;
    my $pattern = "$str/(.+)";
    $str=$pageurl;
    if($str=~m@$pattern@){
        $filename = $1;
    }
    my $dirname = dirname($filename);
   
    unless (-e $dirname) {mkdir $dirname};
   
    if (-e $filename){
        return;
    }
    print "Page $pageurl is download now...\n";     
    `wget $pageurl -P $dirname`;
    my $ower = $pageurl;
    my $remote_path = dirname($pageurl);

    if($filename =~ /htm[l]?$/){
        open fp, "< $filename" or die "Can not open file $filename";
        while(<fp>){
            while(m@href\s*=\s*"([^"]+)"(.*)$@){
                my $link_url = $1;
                my $keep = $2;
                $link_url =~ s@([^#]+)#.+$@$1@;
                #print "$ower:\n$link_url\n";
                #print "$2\n";

                unless ($link_url !~ m@http://@) {
                $_ = $keep;
                last;
                }
                unless ($link_url !~ m@mailto@){
                $_ = $keep;
                last;
                }
                unless ($link_url !~ m@^#@){
                $_ = $keep;
                last;
                }

                $pageurl = catfile($remote_path,$link_url);
                print "$pageurl\n";
                #getpage($pageurl,$main_path);
                $_ = $keep;
            }
        }
        close fp;
    }
}   


foreach(@ARGV){
    print "Page $_ download now,please wait...\n";
    downloadpage($_);
}
print "Page download success!\n";
[/code]

论坛徽章:
0
2 [报告]
发表于 2007-09-05 15:15 |只看该作者
  1. 123
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP