如何抓取一个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
======================