文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>抓取,迅雷下载动漫

抓取,迅雷下载动漫

时间:2010-01-24  来源:wfnh

 

额,我差不多每天都要看动漫,杯具啊,新番啊,很多,还有一些长篇,唉,浪费青春啊,每天上网看有没有更新,真的很杯具,而且校园网又慢,真杯具,所以,写了一个小脚本,每天都自动的下载今天更新的动漫,以来不用自己上网找,二来,可以练练手,一举两得的说···呵呵··

写得比较粗,可以用就行了,或者以后有时间就在写清晰点···

用法:在脚本的目录下,新建一个文本,重命名为web.txt,里边放网址

例子:(文本内容)

#守护猫娘绯鞠

http://www.hlt*.net/view/1085.html

ps:脚本是调用迅雷下载的,在win下通过。动漫下载的网址是X旅(具体就不说了)



 

#!/usr/bin/perl -w

#BY Weigun http://blog.chinaunix.net/u2/70443/

use strict;
use LWP::Simple;
use Win32::OLE;
use Data::Dumper;
my $r_urls=&get_url_list; #hash

my $r_file_name = get_content($r_urls);    #hash

&is_new($r_urls,$r_file_name);
my $r_dlurls=&parse($r_file_name);    #hash

#print Dumper $r_dlurls,"\n";

my $thunder = Win32::OLE->new('ThunderAgent.Agent.1');
for my $key(keys %$r_dlurls)
{
    &dl_by_xl($thunder,$r_dlurls,$key);
}
print "press any key to exit\n";
<STDIN>;
sub get_url_list
{
    my $list = 'web.txt';
    #my @urls;

    my $h_urls={};
    my $i=0;
    open IN,"<",$list;
    while(<IN>)
    {
        chomp;
        next if /^#/;

        next if /^\s+$/;
        #push @urls,$_;

        $h_urls->{++$i}=$_;
    }
    close IN;
    #return \@urls;    

    return $h_urls;
}

sub get_content
{
    my $r_urls=shift;
    my $i=0;
    my $name_hash={};
    mkdir 'web',oct(0777) unless -e 'web' and -d _;
    chdir 'web' or die "can't chdir:$!\n";
    for(keys %$r_urls)
    {
        warn "get $_ error:$!\n" if getstore($r_urls->{$_},$_.'.html') != 200;
        $name_hash->{$_}=$_.'.html';
    }
    return $name_hash;
}

sub parse
{
    my $file_name = shift;
    my $dlurl_hash={};
    my $i=0;
    for my $key(keys %$file_name)
    {
        open IN,"<",$file_name->{$key};
        while(<IN>)
        {
            s/\s+//;
            #chomp;

            if(/.*a href=\'(.*)\'.*>(.*)<\/a><\/li><\/ul>/)
            {
                $dlurl_hash->{++$i}=$1;
                #print $url_hash->{$2},"\n";
                last;
            }
            else
            {
                next;
            }
        }
    }
    close IN;
    return $dlurl_hash;
}

#my $code = mirror('http://www.yahoo.com.cn','/path/file.html');
#
#mirror函数将比较远程和本地文件的一致性,然后返回一个状态号,比如文件相同
#将返回304,如果本地文件同步成功将返回200。
#<b>更新时间:</b>2010-1-22 8:55:10 <b>下载次数:</b><span id="hit">加载中</span><script>getVideoHit('1088')</script>
sub is_new
{
    my ($r_url,$r_name)=@_;
    for my $key(keys %$r_name)
    {
        my $mod_time = &parse_date($r_name->{$key});
        if($mod_time ne &get_date)
        {
            delete $r_name->{$key};
            next;
        }
    }
}

sub parse_date
{
    my $name=shift;
    my $time;
    open FH,"<",$name;
    while(<FH>)
    {
        if(/.*更新时间.*?\/b>(.*?)\s.*/)
        {
            $time=$1;
            last;
        }
    }
    close FH;
    return $time;
}
sub get_date
{
     my($day,$mon,$year)=(localtime)[3..5];
     $day = ($day < 10)? "0$day":$day;
     $mon = ($mon < 9)? ($mon+1):($mon+1);
     $year += 1900;
   return $year.'-'.$mon.'-'.$day;
}
sub dl_by_xl
{
    my ($obj,$r_name,$key)=@_;
    #下面是迅雷AddTask()的参数,我只用了3个,$url $filename $path
    #my ($url,$filename,$comments,$refer_url,$start_mode,$only_from_origin,$origin_thread_count);
    my ($url,$filename);
    $url=$r_name->{$key};
    ($filename)=$url=~/.*\/(.*\..*)/;
    #print $filename,"\n";
    my $path='f:\\movies\\';
    $obj->AddTask($url,$filename,$path,$url,$url,1,0,5) ;
    $obj-> CommitTasks2(1);
    print 'Task Commit

}


相关阅读 更多 +
排行榜 更多 +
方块枪战战场安卓版

方块枪战战场安卓版

飞行射击 下载
战斗火力射击安卓版

战斗火力射击安卓版

飞行射击 下载
空中防御战安卓版

空中防御战安卓版

飞行射击 下载