分页: 1 / 2

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

发表于 : 2009-08-26 23:53
formylove2
比如这个网页上有大批rar类型的文件 提供了超级连接 可供直接下载 无登录等限制

当然 也可以是PDF阿 什么的 我想写一个脚本 用wget批量下载 但用什么判断这些页面上的东东呢?

望有高手指条明路

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

发表于 : 2009-08-26 23:55
formylove2
给点提示都行

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

发表于 : 2009-08-27 8:12
O_O_BOT
分析 href -> grep -> ok

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

发表于 : 2009-08-27 9:34
eexpress

代码: 全选

cat fetch-link.pl 
#!/usr/bin/perl

use LWP::UserAgent;
my $url=shift;
#my $url='http://forum.ubuntu.org.cn/search.php?search_id=newposts';
#my $url='http://doc.linuxpk.com/2970.html';
my $ua=new LWP::UserAgent();
my $re= $ua->get($url);
die if (!$re->is_success);
my $html= $re->content;

#得到页面中所有链接
while($html=~m{<a href=(["'])(.*?)\1.*?>(<.*?/>)*(.*?)</a>}gsi){
#print "$2\t--->$4\n";
my $l=$2; my $t=$4;if($l=~/^http/ and $l!~/com\/$|cn\/$/ and $t!~/^</){print "$l\t--->$t\n";}
}

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

发表于 : 2009-08-27 18:22
formylove2

代码: 全选

$html=~m{<a href=(["'])(.*?)\1.*?>(<.*?/>)*(.*?)</a>}gsi
#这个正则下来有哪几个变量赋值了?

代码: 全选

$l=~/^http/ and $l!~/com\/$|cn\/$/ and $t!~/^</
#这个是去掉地址中的http com cn 然后找到匹配$l 和$t 的东西?
这两个正则 。。我实在是看不明白

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

发表于 : 2009-08-27 19:19
formylove2
不过很感谢EE

perl 的LWP 模块 进行页面分析 前面那段网页内容的获取没多大问题

就是后面那些正则分析 提取需要的内容。。哎 真是想破脑袋

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

发表于 : 2009-08-27 21:07
O_O_BOT
要shell的没

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

发表于 : 2009-08-27 21:22
eexpress
perl 的正则,天生强大,而且难懂。 :em04

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

发表于 : 2009-08-27 21:59
formylove2
O_O_BOT, 的 有点玩不明白

./脚本 目标地址 ? 这样运行么? 提示输入Inpu regex 我输入 *.rar 只能下载主页


我现在根据ee的办法 现用perl提取到指定页面的内容 让脚本建个wget的下载list 把指定页面的 链接分析 放到 list中 然后调用wget下载

现在问题就是怎么把指定页面内容里的 <a href= > </a> 中的 指定类型给"正则"出来

对了 我怎么在perl脚本中调用bash里的程序阿?

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

发表于 : 2009-08-27 22:46
eexpress
调用啊。就是``啊
比如

代码: 全选

`wget $myurl`;
<a href= > </a> 中的 指定类型给"正则"出来
你试试这注释掉的那句,就知道了。
while($html=~m{<a href=(["'])(.*?)\1.*?>(<.*?/>)*(.*?)</a>}gsi){
#print "$2\t--->$4\n";

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

发表于 : 2009-08-27 23:03
knowfarway
cat fetch-link.pl
这个是什么东东?我这里木有fetch-link.pl,怎么办?

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

发表于 : 2009-08-27 23:24
formylove2
$url=http://www.ouravr.com/bbs/bbs_content.j ... bs_id=1000
比如这个网址

#print "$2\t--->$4\n";
解除注释后 运行

就是没有 下载的那些文件的链接 都是些无关紧要的
我仔细看了下 发现你的正则好像要改下 找到的全部都是 像这样格式的:
<br><a href=xxxxxx>xxxxxr</a>

而页面上放出的下载连接源码 前面都带有http
<br><a href=http://download.ourdev.cn/bbs_upload245 ... 用资料.rar</a>

只要前面带http的都分析不出来

$2 和$4 对应的是哪段正则的?
悲伤的问一下 为啥我的shell 里显示 $4时都这样子?:���

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

发表于 : 2009-08-27 23:27
eexpress
就是模式匹配的。那些()嘛。几个()里面的。就是$digit 表示的。


给你一个我整理的变量说明。

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

发表于 : 2009-08-27 23:55
formylove2
哦 有点眉目了 重点就是正则 你那个开头
["'] 是针对 这样的形式 "xxxxx" 'xxxx' 才匹配 有些连接没有"" 和''

后面的那个(<.*?/>)*(.*?)</a> 可以去掉 我只需要路径 标识在shell里显示乱码估计是网页上编码的问题

最后的那个gsi啥意思阿

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

发表于 : 2009-08-27 23:59
O_O_BOT
:em20 我用的是grep 的正则 那
\.rar 罗