wget 递归抓取做什么
wget 的递归能力用来镜像站点:-r 递归下载、-np 不进入上级目录、-k 把链接改成相对路径方便本地浏览、-p 连页面所需资源(图片与样式)一起下载。做静态文档备份、离线查阅内部资料时很实用。抓取前要确认授权与 robots 约束,并限制速率与范围,否则容易触发封禁或把磁盘写满。
基本信息
| 适用平台 | Linux/macOS(GNU Wget;部分 BSD 系未预装) |
|---|---|
| 常用选项 | -r 递归、-np 不进上级、-k 转换链接、-p 下载资源、-l 深度、-A 只抓匹配文件 |
| 镜像模式 | -m(含时间戳判断的镜像抓取) |
| 限速与礼貌 | --limit-rate=300k、--wait、限制深度 |
| robots | 默认遵守;-e robots=off 会关闭检查 |
典型使用场景
- 备份静态文档站或手册,供离线查阅
- 抓取指定类型文件(配合 -A 只取 PDF 或图片)
- 把内部 wiki 的授权页面存成本地副本
- 临时镜像供内网访问,减轻源站压力
- 演练与测试环境造数据(限定深度与速率)
常用示例
常用示例
wget -r -np -k -p https://docs.example.com/start/ # 递归下载并拉齐资源,链接本地化
wget -m -np --limit-rate=300k https://docs.example.com/ # 镜像模式并限速,避免压满带宽
wget -r -l 2 -np -A '*.pdf' https://docs.example.com/files/ # 只抓 PDF,深度 2 层
wget -r -np -k -p -e robots=off https://intranet.local/docs/ # 内部站点,明确授权后再关检查
wget --spider -r -np https://docs.example.com/start/ # 只探测可达性,不写文件
du -sh docs.example.com # 抓完先看总占用
du -sh docs.example.com/*/ | sort -h | tail # 再比较各目录占用,找出大头常用选项
| 选项 | 作用 | 注意 |
|---|---|---|
| -r | 递归下载 | 必须配合 -np 或 -l 限制范围 |
| -np | 不进入上级目录 | 防止顺着链接把无关范围全抓下来 |
| -k | 把链接改写为相对路径 | 只处理 HTML 中可识别的链接 |
| -p | 下载页面所需资源 | 离线浏览时样式与图片才完整 |
| -l N | 限制递归深度 | 抓大站时最有效的刹车 |
| --limit-rate | 限速 | 对他人站点保持克制的最直接手段 |
抓站前确认对方 robots 与授权范围,并控制并发与速率:大站递归可能触发 WAF 封禁、产生授权风险,或把本地磁盘写满;抓内网站点同样需要明确许可。
-k 只能改写 HTML 里可识别的链接,JS 动态渲染的内容抓不到。单页应用需要浏览器渲染或专门的采集工具,用 wget 只会得到一堆空壳页面。