Linux 如何使用 wget 下载整个网站

Linux 如何使用 wget 下载整个网站

近期要去缅甸呆半个月,想顺便把 W3SCHOOL.COM 上面的 HTML/CSS/JS/PHP 教程温习一遍。但是有一个问题,缅甸的网速很慢,我们住的酒店 wifi 不稳定,今年 1 月份和 6 月份我也在缅甸胶漂岛呆过,特别怀念我国的 4g 网络。所以,这次无论如何我要把 W3SCHOOL.COM 的内容离线下载下来。

wget 是用于从网站下载资源的 linux 命令,基本用法是 wget url:

wget http://www.w3schools.com/

一般来说,网站的页面会有很多链接,点击之后可以链接到其他页面,其他页面也可能有链接,就这样一级一级链接下去,如果要把这些所有关联的页面都下载下来,用法是:

wget -r http://www.w3schools.com/

但是大部分网站不允许你下载所有网站的内容,如果网站检测不到浏览器标识,会拒绝你的下载连接或者给你发送回一个空白网页。这个时候在 wget 后面加上 user-agent 就可以:

wget -r -p -U Mozilla http://www.w3schools.com/

为了避免被网站加入黑名单,我们可以限制下载的速度以及两次下载之间的等待时间:

wget --wait=20 --limit-rate=20K -r -p -U Mozilla http://www.w3schools.com/

如何只是想下载特定文件夹下的网页,使用 --no-parent:

//只下载 `/js` 下的所有页面
wget --wait=20 --limit-rate=20K --no-parent -r -p -U Mozilla http://www.w3schools.com/js/default.asp

更多内容请参考 GNU Wget Manual

### 使用 `wget` 命令在 Linux下载文件 #### 什么是 `wget` `wget` 是一个强大的命令行工具,用于从网络下载文件。它支持 HTTP、HTTPS 和 FTP 协议,并可以递归下载整个目录结构。 --- #### 下载单个文件 要下载单个文件,只需提供目标 URL 地址即可。例如: ```bash wget http://example.com/file.zip ``` 这条命令会将 `file.zip` 文件保存到当前工作目录中[^4]。 --- #### 后台运行下载任务 如果希望下载过程在后台执行,可以使用 `-b` 参数。这会使 `wget` 将日志记录到指定的日志文件中并释放终端控制权。例如: ```bash wget -b --output-file=/path/to/log.txt http://linuxfreedom.com/linuxmint/linuxmint.com/stable/19.3/linuxmint-19.3-cinnamon-64bit.iso ``` 上述命令会在后台启动 ISO 文件的下载并将日志存储至 `/path/to/log.txt` 文件中[^2]。 --- #### 批量下载文件 当需要一次性下载多个文件时,可以通过创建一个包含所有链接的文本文件来实现。假设该文件名为 `urls.txt`,其内容如下: ``` http://url1.com/file1.tar.gz http://url2.com/file2.deb ... ``` 随后可运行以下命令完成批量下载: ```bash wget -i urls.txt ``` 此方法适用于任何数量的目标资源列表[^3]。 --- #### 递归镜像站点或目录 对于想要复制某个远程服务器上的部分甚至全部数据的情况(比如案例中的旧版Linux内核),则需要用到一些额外参数来进行更精细的操作: - **`-r`**: 开启递归模式; - **`-l depth`**(level): 设置最大深入层数,默认无限级数; - **`--no-parent`**: 不访问父路径之外的内容; - **`-np`** (No Parent) : 只抓取给定地址下的东西,不向上追溯; - **`-k`**: 转换已下载文档里的连接为本地相对形式以便离线浏览; - **`-p`**: 自动获取显示网页所需的所有附加组件(图片,CSS样式表等). 举个例子来说,为了克隆位于 `http://oldlinux.org/Linux.old/kernel/0.1x/linux-0.12/` 的资料库,应该这样操作: ```bash wget -r -k -p --no-parent http://oldlinux.org/Linux.old/kernel/0.1x/linux-0.12/ ``` 这段脚本将会把那个特定版本号下面所有的关联项目都拉下来存放到对应的子文件夹里去[^1]. --- #### 断点续传功能 假如中途因为某些原因中断了大文件传输进程,则不必重新开始而是继续之前未完成的部分。启用断点恢复特性非常简单,只需要加上 `-c`(continue)标志位就可以了: ```bash wget -c http://bigserver.example/bigfile.img ``` --- #### 总结注意事项 尽管 `wget` 功能强大且灵活多变,但在实际运用过程中还是需要注意版权法律以及对方服务条款规定等方面因素的影响;另外合理设置并发请求次数(`--limit-rate`)以免造成不必要的带宽浪费或者被封禁IP等问题发生. ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值