wget默认已安装,未安装时用包管理器安装即可;下载网页需-p -k -e参数组合实现离线浏览;批量下载推荐xargs并行;镜像网站用-m -k -p -e --no-parent,注意robots.txt限制及动态内容无法抓取。

wget 在绝大多数现代 Linux 发行版中默认已安装;若未安装,直接用包管理器补上即可,无需额外编译或配置。
检查是否已安装 wget
运行 wget 命令本身就能快速验证:
- 如果输出
wget: missing URL,说明已就位,可直接使用 - 如果提示
command not found,则需安装
常见发行版安装命令如下:
- CentOS/RHEL 7/8:
yum install wget -y或dnf install wget -y - Ubuntu/Debian:
apt install wget -y
注意:yum 在 CentOS 8+ 已被 dnf 替代;若遇到 Failed to set locale 类错误,先执行 export LC_ALL=C 再安装更稳妥。
下载单个网页(含资源)
单纯用 wget https://example.com 只会保存 HTML 文件,页面样式、图片、JS 全丢。要让网页能离线打开,得加关键参数:
-
-p:下载所有必要资源(CSS、图片、JS 等) -
-k:重写 HTML 中的链接,指向本地文件 -
-E:自动将index.html后缀补全(如响应是text/html但无后缀)
完整命令示例:wget -p -k -E https://example.com/about。执行后会在当前目录生成 example.com/ 子目录,里面包含可离线浏览的完整页面。
容易踩的坑:-p 不会递归抓取其他页面,只限当前 URL 所需资源;若页面内嵌 iframe 或 JS 动态加载内容,wget 无法处理——它不执行 JavaScript。
批量下载多个文件(并行加速)
wget -i list.txt 是串行下载,一个接一个,慢且不可控。真正提速得靠并行:
- 用
xargs控制并发数最干净:cat list.txt | xargs -n1 -P4 wget -q(-P4表示最多 4 个并发) -
-q必须加,否则各进程输出混在终端里,无法分辨哪条失败 - 失败时
xargs默认不中断,可用--max-procs=4替代-P4获取更明确退出控制(GNU xargs 支持)
不要用 wget -b 或 & 后台启动多个 wget——日志分散、错误难捕获、无并发数限制,容易打爆远程服务器或本地连接数上限。
下载整个网站或特定类型文件
镜像网站不是简单加 -r 就完事。典型组合:
wget -m -k -p -E --no-parent https://docs.example.com/-
-m(mirror)等价于-r -N -l inf --no-remove-listing,适合增量更新 -
--no-parent(即-np)防止爬到上级目录,避免越界 - 若只要 PDF 和 ZIP 文件,加
-A "*.pdf,*.zip";想排除 HTML,用-R "*.html,*.htm"
关键提醒:很多网站通过 robots.txt 禁止爬取,wget 默认遵守。若确定有权限且需绕过,必须显式加 -e robots=off,否则可能什么也下不到。
最后注意:wget 的递归行为高度依赖页面内链接是否真实存在、是否可被静态解析。AJAX 渲染的列表页、登录后才显示的资源、带 token 的动态 URL,它一律无能为力。











