一个从指定网页地址批量下载相关类型文件的脚本

sh/bash/dash/ksh/zsh等Shell脚本
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 一个从指定网页地址批量下载相关类型文件的脚本

#16

帖子 eexpress » 2009-08-28 0:05

修饰词 含义
/i 或略字母大小写
令 ^ 和 $ 匹配随后嵌入的 \n。
/m
令 . 匹配换行符并且忽略废弃了的 $*。
/s
/x 或略(大多数)空白并且允许在模式里的注释
/o 只编译模式一次
/g 全局地查找所有匹配
在 /g 匹配失败后允许继续查找
/cg

自己下载一个perl书看吧。
● 鸣学
formylove2
帖子: 105
注册时间: 2008-11-03 10:06

Re: 一个从指定网页地址批量下载相关类型文件的脚本

#17

帖子 formylove2 » 2009-08-28 0:29

http://www.ouravr.com/bbs/bbs_content.j ... bs_id=1000
就下这上面的
(bash的脚本那个)
怎么匹配
downlist 上的 最后都只下载
http://www.ouravr.com/bbs

而且还有局限性
比如现在这个页面的 下ee的那个tar.gz 文件 看看源码就没法搞
formylove2
帖子: 105
注册时间: 2008-11-03 10:06

Re: 一个从指定网页地址批量下载相关类型文件的脚本

#18

帖子 formylove2 » 2009-08-28 0:32

我都是看那个网上啥30分钟正则 那啥啥的 用到了 就查 有些东西查不到 goolge 上有 不过思路一变一个样
头像
xzap
帖子: 256
注册时间: 2006-08-24 21:25

Re: 一个从指定网页地址批量下载相关类型文件的脚本

#19

帖子 xzap » 2009-08-28 19:13

如果像
这样子的链接可以这样

代码: 全选

#!/bin/bash
wget $1 -q -T 10 -O- 2>/dev/null |grep -o http://download.ourdev.cn/[a-z0-9_]*/[a-z0-9_]*/[a-z0-9_]*.[a-z]* >/tmp/tmp$$

for i in `cat /tmp/tmp$$`
do
wget "$i"

done
#rm /tmp/tmp$$

要使用的时候,比如上面的名字是xxx
那就 xxx url

编辑一下,测试可用,如果就是那个网页的话,我这个更简单点。通用型差点
上次由 xzap 在 2009-08-28 21:45,总共编辑 2 次。
formylove2
帖子: 105
注册时间: 2008-11-03 10:06

Re: 一个从指定网页地址批量下载相关类型文件的脚本

#20

帖子 formylove2 » 2009-08-28 20:54

代码: 全选

#!/usr/bin/perl
use LWP::UserAgent;
my $url=shift;
my $url='http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=3402316&bbs_page_no=1&search_mode=1&search_text=pdf&bbs_id=1000';
my $ua=new LWP::UserAgent();
my $re= $ua->get($url);
die "Couldn't get $url" unless defined $re;
my $html= $re->content;
#最后提取出出指定页面内容


#为wget创建批量下载文件
open (templist,">temp.txt");
close(templist);


my $type=rar;
my $type1=pdf;
# my $downpath = ;
while($html=~ /\<a href=(.*?)\>/gsi){
open (templist,'>>temp.txt');
print templist "$1\n";
close(templist);
}

system("rm -r downlist.txt");

system("sed -n -e  '/\.$type/p' temp.txt > downlist.txt");
system("sed -n -e  '/\.$type1/p' temp.txt >> downlist.txt");

#根据情况删除  有些 <a href=  > 中不光是路径  还有其他标签  看网页源码情况
system("sed -i 's/target=.*/ /g' downlist.txt >> downlist.txt"); 

unlink("temp.txt");

#路径
system("wget -i downlist.txt -P ~/download/");


花了 两天时间 绝对可行 简单易懂 不过可能写得像陀shit 比你们贴的那些天书简单多了 完成任务才是第一

前半部分根据ee的提示

等有时间了再完善下 像 O_O_BOT的那个脚本 把 下载类型文件给改成 提示 把URL的输入也改成弹出窗口样的提示
反正一切都要顺手和顺眼为前提




(我可是从来没写过脚本 这是第一次写这玩意 )
回复