写在前面
centos下载通常使用wget,wget本身具有丰富的功能,可以指定让wget只批量下载一类文件,或者不下载什么文件,例如:
wget -m –reject=gif http://target.web.site/subdirectory
针对wget的更多批量下载功能,可参考文章:
wget命令详解——批量下载等
本文主要针对Centos系统中批量下载网页中的特定内容,特别是当网页中的文件名不是下载链接的情况,主要思路是在网页上抓取需要的文件链接保存到一个文本文件中,然后用wget批量下载。主要流程是抓取网页内容(源码)-筛选需要下载的文件链接-批量下载。
示范网址为公开网站:https://ftp.mozilla.org/pub/firefox/releases/0.10.1/contrib-localized/
抓取网页
方法一:curl抓取
curl下载网页内容,保存在shifan_html文件中
curl https://ftp.mozilla.org/pub/firefox/releases/0.10.1/contrib-localized/ -o shifan_html
https用curl无法抓取,改用wget
方法二:wget抓取
curl下载网页内容,保存在shifan_html文件中
wget https://ftp.mozilla.org/pub/firefox/releases/0.10.1/contrib-localized/ -O shifan_html
筛选需要的链接
cat查看文件内容,发现十分杂乱无章:
下载所有尾缀为xpi的文件,需要对链接进行筛选,用grep进行筛选并将筛选出的行保存到shaixuan.txt文件中:
grep ".xpi" shifan_html >shaixuan.txt
## 。xpi: 要筛选内容的共同部分
## shifan_html: 要筛选的文件
## shaixuan.txt: 保存的文件名
同理,也可筛选除xpi尾缀以外的所有文件:
grep -v ".xpi" shifan_html >shaixuan2.txt
筛选后的文件如下:
用awk对cat的文本文件进行再次编辑,设置"为分隔符,然后取链接对应的列,写入一个新的文本文件shaixuan3.txt。代码如下:
cat shaixuan.txt | awk -v FS='"' '{print $2}' >shaixuan3.txt
## FS='"' : 以”为分隔符
## print $2: 提取第二列
查看筛选出的链接:
发现筛选出的链接缺少前缀,用awk手动补充并保存到文件lianjie.txt:(如链接完整可省略此步)
awk '{print "https://ftp.mozilla.org/pub" $0}' shaixuan3.txt >lianjie.txt
##awk '{print "需要添加的字符" $0}' fileName
批量下载
wget -b -i lianjie.txt
写在后面
html 文件格式多种多样,本文只列举其中一种,如有其他格式处理的需要可私信笔者,如需求多可另单写一篇教程。希望本文能对大家有所帮助。