Wget 下载器

wget是Linux标配的下载器, 虽然作者说他是Linux上最好的选择, 但是还有aria2 这个多线程下载神器, 个人感觉要比wget好.

在这里, 作者介绍了15个wget的应用.

1. 下载单一文件

  1. wget "http://url.com/file"

很简单 :)

2. 将下载的文件重命名

  1. wget "http://url.com/file" -O rename

-O的选项, 使得下载的文件被重命名了.这个开关很有用, 因为wget默认下载的文件是根据URL来命名的, 如果URL中有很多参数, 那么你下载的文件就会是个乱七八糟的名字, 最常见的是下载百度云…(百度云不开会员就限速!)

3. 下载限速

我们可以用—limit-rate这个选项来限制wget的下载速度, 比如:

  1. wget --limit-rate=200k "http://url.com/file.tar.bz2"

就会限制下载速度到 200KB/s

4. 继续下载

这个功能也很常用, 比如, 正下载到一半断网了, 或者网络中断, 那么就可以用-c的开关来定义继续下载, continue嘛!

需要注意的是, 如果不加这个开关, 那么就会重新下载一个新的文件, 并且如果当前目录下有重名的文件, 会在重名文件的后缀名上加一个.1, 如果有.1了, 就会加个.2, 所以这个-c的开关很重要呢!

  1. wget -c "http://url.com/file.tar.bz2"

5. 后台下载

这个也很有用, 甬道的开关是-b - background

如果开启了这个开关的话, 就不会有任何输出, 但是记录还是要有的, 默认是在当前目录下创建一个wget-log的文件, 若你需要指定记录文件的名字呢, 就需要用到-o这个选项了, 后面接要保存的文件名, 注意了, 这里是小写的o哦!

  1. wget -b "http://url.com/downloads.tar" -o downloads.log -O download_file"

6. 指定下载的 User Agent

—user-agent这个选项可以手动指定我们的 user-agent ,这在目标服务器限制 User Agent的时候很有用.

  1. wget --user-agent="I'm not Wget.." "http://url.com/downloads.tar"

7. 测试目标文件

我们拿到一个下载地址之后就直接开始下载嘛? 一般情况下是的, 但是不排除我们只想看一下目标文件是什么, 类型啦, 大小啦, 甚至目标文件是否真的存在(返回代码是什么).

这个时候就要用到另一个选项 —spider, 没错, 就是蜘蛛, 先让蜘蛛去爬一下, 看看我们要下载的文件成色如何.

  1. wget --spider "localhost/user.zip" -O /dev/null
  2. Spider mode enabled. Check if remote file exists.
  3. --2016-01-03 20:21:11-- http://localhost/user.zip
  4. Resolving localhost (localhost)... 127.0.0.1
  5. Connecting to localhost (localhost)|127.0.0.1|:80... connected.
  6. HTTP request sent, awaiting response... 200 OK
  7. Length: 3463466 (3.3M) [application/zip]
  8. Remote file exists.

上面的就是我们的蜘蛛给我们返回的内容, 比较详细呢!

在看一个错误的(404):

  1. wget --spider rabbit/index.html
  2. Spider mode enabled. Check if remote file exists.
  3. --2016-01-03 20:15:48-- http://rabbit/index.html
  4. Resolving rabbit (rabbit)... 127.0.0.1, 127.0.1.1
  5. Connecting to rabbit (rabbit)|127.0.0.1|:80... connected.
  6. HTTP request sent, awaiting response... 404 Not Found
  7. Remote file does not exist -- broken link!!!

然后服务器端的日志为:

  1. 127.0.0.1 - - [03/Jan/2016:20:15:48 +0800] "HEAD /index.html HTTP/1.1" 404 0 "-" "Wget/1.16.1 (linux-gnu)"

看到了吗, spider实质上是向服务器发送了一个HEAD请求. 以此查看目标文件的信息.

这样做的用途, 作者也给了示例, 感觉最有用的还是检查书签, 检查一下你收藏栏里的网址是否还健在.

8. 设定重试次数

有时候网络不好, 下载经常重试, 所以就需要设定retry的次数, 可以用–tries这个选项来定义:

  1. wget --tries=75 "http://url.com/file.tar.bz2"

9. 批量下载(从文件导入下载链接)

这个功能实际上是从一个文件读取下载链接, 然后慢慢下载…

比如, 有个 url.txt 里面存放着很多下载地址, 那么就可以用 -i这个参数来定义:

  1. wget -i url.txt

在此安利一波我的杂货仓: http//ipv6.kfd.me 仅限IPv6地址访问.

10. 下载整个网站(爬爬爬)

  1. wget --mirror -p --convert-links -P ./LOCAL-DIR WEBSITE-URL

这个… 先一一介绍参数吧:

  • —mirror 打开'镜像储存'开关 因为我们是复制整个网站嘛
  • -p 下载所有相关文件 为了展示HTML页面所必须的文件,css,js,img啥的
  • –convert-links 下载完成之后, 把原始链接转换成相对连接(根据本地环境)
  • -P ./LOCAL-DIR 保存到指定的目录下

这个例子实际上就是爬站… 或者说, 窃.

11. 拒绝下载某种文件

再上面的例子中, 如果你不想下载某种特定类型的文件, 就可以用—reject参数来指定要拒绝的文件类型, 比如—reject=gif就拒绝下载gif文件.

12. 保存下载日志

上面(第五点)我已经提过了, 在此不再赘述,

参数为 -o 小写.

13. 超过设定大小后自动退出

如果你想让下载的文件不超过20M, 就可以指定 -Q的参数, 如果超过多少兆之后, 就退出下载.

  1. wget -Q5m -i url.txt

这个参数生效的条件是, url必须都要从文件中读取.

14. 仅下载特定类型的文件

用途:

  • 下载某个网站上的所有图片
  • 下载某个网站上的所有视频
  • 下载某个网站上的所有PDF文件
  1. wget -r -A.pdf "http://url-to-webpage-with-pdfs.com/"

-r表示递归下载, 默认深度为5.

15. FTP登陆下载

  1. wget --ftp-user=USERNAME --ftp-password=PASSWORD "DOWNLOAD.com"

wget作为一个优秀的下载软件, 功能强大到难以想象, 想知道更多? 问一下man吧!