欢乐chylli 发表于 2011-11-2 15:26:08

发个批量下载本版115资源的脚本子

本帖最后由 欢乐chylli 于 2011-11-2 15:27 编辑

为了下载论坛上的dk的那个资源,我写了这个脚本,115的优蛋实在是不能忍了
用法
1. 用浏览器将相应的帖子存盘,起名叫a.html, 这是因为如果不这样的话,付费的内容用脚本下载不下来.
2. 在同一个目录下运行这个脚本.
这个脚本只是挑第一个link下载,不会选择是联通还是电信.如果大家有兴趣,我以后再加上这个功能
这个脚本也不会报告错误,因为是我一次性用的脚本.不过大家如果有兴趣还是可以用一下的,115太烂了.

#!/usr/bin/perl -w
use strict;
use warnings;

use LWP::Simple;
use HTML::LinkExtor;
$| = 1;

open my $fh, ">>download.log";

my @urls ;
my @urls2;
my $download = 1;

sub cb {
    my ($tag, %attr) = @_;
    if ($tag eq 'a' && $attr{href} && $attr{href} =~ /115.com/) {
      push @urls, $attr{href};
    }
}

sub cb2 {
    my ($tag, %attr) = @_;
    if ($tag eq 'a' && $attr{href} && $attr{href} =~ /down_group/ ) {
      push @urls2, $attr{href};
    }

}

my $p = HTML::LinkExtor->new(\&cb);
$p->parse_file("a.html");


for my $u (@urls) {
    print $fh "processing $u\n";
   

    if ($download == 0) {
      if ($u =~ 'e6a7to82#') {
            $download = 1;
      }
      print $fh "dont download $u\n";
      
      next;
    }
    #print "\n\ndoing $u...\n";
   
    my $content = get ($u);

    unless (defined($content)) {
      warn "cannot get $u\n";
      next;
    }
    my $p2 = HTML::LinkExtor->new(\&cb2);
    $p2->parse($content);
    #print $urls2,"\n";
    $urls2 =~ /file=(.*)$/;
    my $file = $1;

    print $fh "downloading $file\n";
   
    getstore($urls2,$file);

    @urls2 = ();
   
}




http://www.ebama.net/xwb/images/bgimg/icon_logo.png 该贴已经同步到 欢乐chylli的微博

renhuan898 发表于 2011-11-2 15:28:44

呵呵,我们这里还有这样的高手啊,佩服,保存了,多谢多谢啦!

icers 发表于 2011-11-2 15:29:22

高手啊!谢谢分享!

qisini1974 发表于 2011-11-2 15:30:08

非常感谢,您真有才啊

frostbird 发表于 2011-11-2 15:30:20

收藏,用的时候过来取。{:soso_e163:}

aneyshine 发表于 2011-11-2 15:35:44

先收藏了。女儿英语学得好,原来妈妈就这么厉害。你女儿的卡由背得真纯正。

gzjoantse 发表于 2011-11-2 15:45:36

DK啊,我早下完了,LZ不早点发这个,下得我手快断了

欢乐chylli 发表于 2011-11-2 15:47:06

gzjoantse 发表于 2011-11-2 15:45 static/image/common/back.gif
DK啊,我早下完了,LZ不早点发这个,下得我手快断了

我也是实在不能忍了才写的这个

ejianghui 发表于 2011-11-2 15:53:28

先发个贴,坐下来慢慢看

aneyshine 发表于 2011-11-2 16:11:45

首先向您道歉,没有看清您是位奶爸。
不过我有些纳闷,那你用的头像是谁呢?你女儿的照片吗?当时没记住家长的名字,但是的确是这个孩子,卡由背得非常纯正。

babydream 发表于 2011-11-2 16:12:02

这个好。。

rain_scape 发表于 2011-11-2 16:13:50

我太小白了,老实说脚本不会用,看不懂呀{:soso_e127:}

摇摇妈 发表于 2011-11-2 18:27:25

跟楼上的握手,我也不会用。。。{:soso_e106:}LZ详细介绍一下啦

flora602 发表于 2011-11-2 22:08:46

还是没看懂的飘过

欢乐chylli 发表于 2011-11-2 22:22:29

摇摇妈 发表于 2011-11-2 18:27 static/image/common/back.gif
跟楼上的握手,我也不会用。。。LZ详细介绍一下啦

这个没办法,我总不能开个perl培训班吧....
其实发这里意义也不是很大,会用perl的这个小程序能自己写出来,不会用perl的,他也不会用这个脚本啊...

疯狂的小豆子 发表于 2011-11-2 22:40:35

呵呵,我也不懂脚本咋用呢?开个培训班不错的

lleon 发表于 2011-11-3 18:12:07

这个脚本能不能自动将不同类别的PDF放到不同目录下?否则以后手工分类还是麻烦。

小虎丫丫 发表于 2011-11-3 20:54:48

有个东西叫“好蛋”,我一直用那个批量下的

不过楼主的技术让人佩服哈

泡沫奶茶 发表于 2011-11-3 22:49:55

看不懂。。。也不会用。。。

chjunxia 发表于 2011-11-6 12:42:10

1. 用浏览器将相应的帖子存盘,起名叫a.html, 这是因为如果不这样的话,付费的内容用脚本下载不下来.
相应的帖子是指哪个?

2. 在同一个目录下运行这个脚本.
同一个目录下运行,什么意思呢?

欢乐chylli 发表于 2011-11-6 14:34:37

chjunxia 发表于 2011-11-6 12:42 static/image/common/back.gif
1. 用浏览器将相应的帖子存盘,起名叫a.html, 这是因为如果不这样的话,付费的内容用脚本下载不下来.
相应的 ...

1. 用浏览器将相应的帖子存盘,起名叫a.html, 这是因为如果不这样的话,付费的内容用脚本下载不下来.
相应的帖子是指哪个? 比如你想下载英语版的有人发布的dk的书,就建一个空目录,然后用浏览器将这个页面另存为硬盘上的a.html.
这个相应的帖子就是有人在这个论坛上发布的英语资源帖子

2. 在同一个目录下运行这个脚本.
同一个目录下运行,什么意思呢?
同一个目录,就是在存放a.html的那个目录运行程序,这个程序会读取a.html

我用过几次,发现这个工具在下载小资源时非常好使,不过100M的东西的话,成功率很高,而下载几G的大东西的话就不行了,因为115的东西下载时老断开,而这个工具没有断点续传的功能.暂时我没想着进一步开发,毕竟是临时用的,凑合着就行了.如果大家感兴趣我可以再仔细改一改

dudu246 发表于 2011-11-7 16:49:18

收藏了,以后,简单多了……thanks

小豆包 发表于 2011-11-14 09:53:28

欢乐chylli 发表于 2011-11-6 14:34 static/image/common/back.gif
1. 用浏览器将相应的帖子存盘,起名叫a.html, 这是因为如果不这样的话,付费的内容用脚本下载不下来.
相应 ...

请问,怎么运行脚本?谢谢!

瑞妈王相宜 发表于 2011-11-24 14:09:35

LZ写一下怎么运行吧~~

librapig 发表于 2011-11-25 10:12:38

早点看到这个就好了
页: [1]
查看完整版本: 发个批量下载本版115资源的脚本子