首页  编辑  

递归抓取网页下所有某个类型文件下载地址列表的方法

Tags: /计算机文档/Linux & Unix/   Date Created:

如何抓取一个URL网页及其递归网页下,所有的文件或者某类文件,或者列出所有URL下载地址清单?

例如,一个支持目录列表的HTTP网页,可以以目录列表的形式来浏览服务器文件目录,并且可以下载,此时如果要完整下载整个站点,可以用wget拉取整个站点,你甚至可以指定只下载某类文件,比如:

wget -r -c -np -A zip http://www.3gpp.org/ftp/specs/archive/

上面的指令,可以抓取 http://www.3gpp.org/ftp/specs/archive/ 及其所有子页面下,zip文件,并在本地保持同样的目录结构!

但如果你只想生成一个zip文件下载的URL列表,则可以:

wget -r -np -nd --spider -A zip http://www.3gpp.org/ftp/Specs/archive/ -o list.txt.tmp

cat list.txt.tmp | grep -o 'http:[^"]*.zip' > list.txt

wget -c -i list.txt

其中list.txt就保存了所有zip的下载目录链接。

部分指令,需要在Linux下运行,或者支持完整功能的grep命令。

==========================

REM 这个脚本可以下载所有3GPP的协议文档

@wget -r -c -np -A zip http://www.3gpp.org/ftp/specs/archive/

exit

REM 下面的代码,可以只下载最新的版本,减少下载量

REM 获取所有zip文件列表

wget -r -np -nd --spider -A zip http://www.3gpp.org/ftp/Specs/archive/ -o list.txt.tmp

cat list.txt.tmp | grep -o 'http:[^"]*.zip' > list.txt

REM 为了得到最新的版本,不下载老的,请用Excel处理一下list.txt:

REM     1. 首先,把第一列倒序排序

REM     2. 在第二列, = left(a1, len(a1) - 7),然后填充

REM     3. 删除重复项,重复列选择第二列

REM     4. 保存第一列即可得到最新的版本文件URL

wget -c -np -nd -i list.txt

======================

3ggp.sh (0.9KB)