我的技术杂谈 欢迎关注 一起学习~
本篇文章是自己使用 wget 时的学习笔记,建议使用 PC 打开浏览。
GUN Wget也是一个免费的开源项目,用于从
web上下载文件。
wget
使用
通过软件管理包安装非常简单,可参考:参考1-《How to Install Wget in Linux》
## Ubuntu/Debian
apt-get install wget
## RHEL/CentOS/Fedora
yum install wget
## OpenSUSE
zypper install wget
## ArchLinux
pacman -Sy wget
安装完毕之后,可以使用 wget --version
或 wget -V
验证工具是否安装成功!
可以做什么?
通过 HTTP
、HTTPS
、FTP
、FTPS
协议递归下载文件支持自动断点续传文件【 -c
参数,旧版本可能存在问题,详情见:参考2-Linux 环境下使用 wget 命令下载 Blob 文件断点续传问题】支持通配符批量下载文件 支持将下载的文档中的绝对链接转换为相对链接,以便下载的文档可以在本地彼此链接(--convert-links) 支持:HTTP 代理、COOKIE设置、HTTP 持久化连接
常用参数
更多参数,查看GNU Wget Manual
,详细使用用法自行谷歌!
下载参数
| 参数 | 作用 |
|---|---|
| -b, –-background | 启动后转入后台执行【可以通过 tail -f wget.log查看下载进度】 |
| –progress=TYPE | 设置进程标记【通过 -b后台作业进行下载时】 |
| -e, –-execute=COMMAND | 启动下载进程之前执行命令【如:设置临时环境变量...】 |
| -c, –-continue | 接着下载没下载完的文件【即:断点续传】 |
| -S, –-server-response | 打印服务器的回应 |
| -nc, –-no-clobber | 不要覆盖存在的文件或使用.#前缀【若本地已有同名文件,拒绝下载-在多次重复下载同一个站点时或者存在站点多个网页引用同一个资源时常用】 |
| -N, –-timestamping | 不要重新下载文件除非比本地文件新【只是单纯的对比下载时间,并不会理会本地文件是否下载完整】 |
| -t, –-tries=NUMBER | 设定最大尝试链接次数(0表示无限制).【当由于网络的原因下载失败, wget会不断的尝试,直到整个文件下载完毕,可以设置最大尝试连接次数】 |
| -T, –-timeout=SECONDS | 设定响应超时的秒数 |
| -w, –-wait=SECONDS | 指定两次重试之间间隔秒数 |
| –waitretry=SECONDS | 在重新链接之间等待的秒数 |
| –random-wait | 在下载之间等待 0-2 秒 |
| -Y, –-proxy=on/off | 打开或关闭代理【更推荐:https://www.cnblogs.com/frankyou/p/6693256.html 文中方法3】 |
| -Q, –-quota=NUMBER | 设置下载的容量限制【注意:这个参数对单个文件下载不起作用,只能递归下载时才有效。如:-Q=5m】 |
| -–limit-rate=RATE | 限定下载速率【即:限制下载带宽,如:--limit-rate=50k】 |
| –-bind-address=ADDRESS | 指定本地使用地址(主机名或IP,当本地有多个 IP或名字时使用) |
| –-spider | 不下载任何东西【当需要调试打印 HTTP响应信息时会使用该参数跳过下载步骤】 |
下载路径设置
| 选项/参数 | 作用 |
|---|---|
| -O FILE, –-output-document=FILE | 把文档写到文件中【即:自定义下载路径】 |
| -nd, –-no-directories | 不创建目录(缺省参数) |
| -x, –-force-directories | 强制创建目录【如:下载 www.learningcontainer.com/wp-content/uploads/2020/05/sample-mp4-file.mp4会层层创建目录】 |
| -nH, –-no-host-directories | 不创建主机目录【当 -x参数存在时才可用】 |
| -P, –-directory-prefix=PREFIX | 将文件保存到目录 PREFIX/… |
输入/记录日志输出
| 选项/参数 | 作用 |
|---|---|
| -i, –-input-file=FILE | 下载指定文件中出现的URLs |
| -F, –-force-html | 把输入文件当作HTML格式文件对待 |
| -B, –-base=URL | 将URL作为在 -F -i参数指定的文件中出现的相对链接的前缀 |
| -d, –-debug | 打印调试输出 |
| -q, –-quiet | 安静模式(没有输出,下载完成直接退出) |
| -v, –-verbose | 冗长模式(这是缺省设置) |
| -nv, –-non-verbose | 关掉冗长模式,但不是安静模式【相比安静模式,该模式下若下载完成会输出下载完成信息】 |
| -o, –-output-file=FILE | 把记录写到文件中 |
| -a, –-append-output=FILE | 把记录追加到文件中 |
HTTP 选项参数
| 选项/参数 | 作用 |
|---|---|
| –-no-cache | 允许/不允许服务器端的数据缓存 (一般情况下允许) |
| -–no-http-keep-alive | 关闭 HTTP活动链接 (持久链接) |
| -–http-user=USER | 设定HTTP用户名 |
| -–http-passwd=PASS | 设定HTTP密码 |
| -–proxy-user=USER | 设定代理的用户名 |
| -–proxy-passwd=PASS | 设定代理的密码 |
| -U, –-user-agent=AGENT | 设定代理的名称为AGENT(默认为: Wget/VERSION |
| -–header=STRING | 在headers中插入字符串 STRING |
| –-load-cookies=FILE | 在开始会话前从文件中加载cookie |
| -–save-cookies=FILE | 在会话结束后将 cookies保存到文件中 |
| -–referer=URL | 在HTTP请求中包含 Referer: URL头 |
FTP 选项参数
wget -v --ftp-user=demo --ftp-password=password "ftp://test.rebex.net/readme.txt"
递归下载
| 选项/参数 | 作用 |
|---|---|
| -r, -–recursive | 递归下载--慎用! |
| -l, -–level=NUMBER | 最大递归深度 (inf或 0代表无穷) |
| -k, –-convert-links | 转换非相对链接为相对链接 |
| -K, –-backup-converted | 在转换文件X之前,将之备份为 X.orig |
| -m, –-mirror | 等价于 -r -N -l inf -nr【对网站做镜像下载】 |
| -L, –-relative | 仅仅跟踪相对链接 |
| -np, –-no-parent | 不要追溯到父目录 |
| -A, –-accept=LIST | 分号分隔的被接受扩展名的列表 |
| -E, --adjust-extension | 以合适的扩展名保存 HTML/CSS 文档 |
| -H, --span-hosts | 递归下载时,允许递归检索第三方外链域名【慎用!!!】 |
| -R, –-reject=LIST | 分号分隔的不被接受的扩展名的列表 |
| -D, –-domains=LIST | 分号分隔的被接受域的列表 |
| –-exclude-domains=LIST | 分号分隔的不被接受的域的列表 |
| –-follow-ftp | 跟踪HTML文档中的FTP链接 |
| –-follow-tags=LIST | 分号分隔的被跟踪的HTML标签的列表 |
| -I, –-include-directories=LIST | 允许目录的列表 |
| -X, –-exclude-directories=LIST | 不被包含目录的列表 |
案例:wget
下载网站下的图片
图片命名有规则
对于命名有规则的图片,下载非常简单:使用通配符(*-任意长度的任意字符、?-任意一个字符、[]-括号中的任意一个字符、{..}-表示一个序列)下载即可
wget -b http://aliimg.changba.com/cache/photo/{260929610-260939610}_640_640.jpg
图片命名无规则
一共 22 页,图片全部在 CDN:img1.446677.xyz
上,图片命名是非规则的!
遍历当前页面的 img.446677.xyz
域名,下载资源遍历 22 分页: https://www.kanxiaojiejie.com/page/{1..22}
wget -b -c -r -H -D "img1.446677.xyz" -R "www.kanxiaojiejie.com" -nc https://www.kanxiaojiejie.com/page/{1..22}
参考1:https://www.tecmint.com/install-wget-in-linux/ 参考2:https://docs.azure.cn/zh-cn/articles/azure-operations-guide/storage/aog-storage-blob-wget-download-offset) 通配符:http://www.ruanyifeng.com/blog/2018/09/bash-wildcards.html
文章转载自李明双的身边,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




