【Linux】centos 批量下载网页中的内容(抓取链接+下载)

写在前面

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 文件格式多种多样,本文只列举其中一种,如有其他格式处理的需要可私信笔者,如需求多可另单写一篇教程。希望本文能对大家有所帮助。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值