wget使用

Wget是一种很好用的因特网下载工具,他具有的很多特性是其他工具所不能比拟的,再者他是一个轻量级可配置的下载工具。

1、用Wget下载单个文件

下载的时候会显示:

  ~文件的大小、连接状态、连接地址以及文件的大小

  ~保存的名称

  ~下载进度条

  ~下载速度、时间,还有多少未下载

例如我下载editplus时输入

D:\Hack stuff\wget>wget http://software-files-a.cnet.com/s/software/12/32/81/47/
epp331.exe?token=1329413178_4553efa847829f3ecef10c1bc256fcc0&lop=link&ptype=3001 &ontid=2352&siteId=4&edId=3&spi=537d5d5485f688682d82c481c4fb15a1&pid=12328147&ps id=10018241&&fileName=epp331.exe

则下载时会显示以下内容

复制代码
D:\Hack stuff\wget>wget http://software-files-a.cnet.com/s/software/12/32/81/47/
epp331.exe?token=1329413178_4553efa847829f3ecef10c1bc256fcc0&lop=link&ptype=3001 &ontid=2352&siteId=4&edId=3&spi=537d5d5485f688682d82c481c4fb15a1&pid=12328147&ps id=10018241&&fileName=epp331.exe
--2012-02-16 15:28:50--  http://software-files-a.cnet.com/s/software/12/32/81/47
/epp331.exe?token=1329413178_4553efa847829f3ecef10c1bc256fcc0
Resolving software-files-a.cnet.com... 204.2.171.33, 204.2.171.35
Connecting to software-files-a.cnet.com|204.2.171.33|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1766464 (1.7M) [application/octet-stream]
Saving to: `epp331.exe@token=1329413178_4553efa847829f3ecef10c1bc256fcc0'

18% [======>                                ] 335,238     20.5K/s  eta 64s
复制代码


2、用Wget-O下载可以为下载的文件指定另外一个名字

默认情况下wget会用最后的斜线后面的所有字符来命名下载下来的文件,如上例所示保存的文件名为

Saving to: `epp331.exe@token=1329413178_4553efa847829f3ecef10c1bc256fcc0'

这不是我们所想要的,我们可以用-O选项来改变将文件保存为editplus.exe

D:\Hack stuff\wget>wget -O editplus.exe http://software-files-a.cnet.com/s/software/12/32/81/47/
epp331.exe?token=1329413178_4553efa847829f3ecef10c1bc256fcc0&lop=link&ptype=3001 &ontid=2352&siteId=4&edId=3&spi=537d5d5485f688682d82c481c4fb15a1&pid=12328147&ps id=10018241&&fileName=epp331.exe

 

3、用Wget --limit-rate指定下载的速度

如下面这个例子限制速度为300k

D:\Hack stuff\wget>wget --limit-rate=300k http://downloads.sourceforge.net/project/boost/boost-doc
s/1.47.0/boost_1_47_pdf.zip?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fboost%2F &ts=1329379231&use_mirror=nchc

 

4、续传下载用Wget -c

当你在下载一个大文件时突然中断了那么这个选项就派上用场了

D:\Hack stuff\wget>wget -c http://downloads.sourceforge.net/project/boost/boost-doc
s/1.47.0/boost_1_47_pdf.zip?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fboost%2F &ts=1329379231&use_mirror=nchc

 

5、后台下载用wget -b

用此选项下载时只会初始化下载而不会显示相关信息

复制代码
D:\Hack stuff\wget>wget -b http://downloads.sourceforge.net/project/boost/boost-
docs/1.47.0/boost_1_47_pdf.zip?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fboost
%2F&ts=1329379231&use_mirror=nchc
Continuing in background, pid 6132.
Output will be written to `wget-log'.
复制代码

下载以后会在wget目录下生产wget-log文件,用记事本打开可查看里面的内容如下所示

复制代码
--2012-02-16 16:12:55--  http://downloads.sourceforge.net/project/boost/boost-docs/1.47.0/boost_1_47_pdf.zip?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fboost%2F
Resolving downloads.sourceforge.net... 216.34.181.59
Connecting to downloads.sourceforge.net|216.34.181.59|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://nchc.dl.sourceforge.net/project/boost/boost-docs/1.47.0/boost_1_47_pdf.zip [following]
--2012-02-16 16:12:56--  http://nchc.dl.sourceforge.net/project/boost/boost-docs/1.47.0/boost_1_47_pdf.zip
Resolving nchc.dl.sourceforge.net... 211.79.60.17
Connecting to nchc.dl.sourceforge.net|211.79.60.17|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 31421410 (30M) [application/zip]
Saving to: `boost_1_47_pdf.zip.4'

     0K .......... .......... .......... .......... ..........  0% 19.7K 25m51s
    50K .......... .......... .......... .......... ..........  0% 29.1K 21m40s
   100K .......... .......... .......... .......... ..........  0% 20.8K 22m35s
   150K .......... .......... .......... .......... ..........  0% 19.5K 23m26s
   200K .......... .......... .......... .......... ..........  0% 18.4K 24m13s
   250K .......... .......... .......... .......... ..........  0% 20.8K 24m13s
   300K .......... .......... .......... .......... ..........  1% 18.2K 24m41s
   350K .......... .......... .......... .......... ..........  1% 23.5K 24m16s
复制代码


6、测试你要下载的地址用Wget --spider

wget --spider DOWNLOAD-URL

如果所给URL是正确的则会显示

复制代码
Resolving downloads.sourceforge.net... 216.34.181.59
Connecting to downloads.sourceforge.net|216.34.181.59|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://ncu.dl.sourceforge.net/project/boost/boost-docs/1.47.0/boost_1_
47_pdf.zip [following]
Spider mode enabled. Check if remote file exists.
--2012-02-16 16:21:08--  http://ncu.dl.sourceforge.net/project/boost/boost-docs/
1.47.0/boost_1_47_pdf.zip
Resolving ncu.dl.sourceforge.net... 140.115.17.45
Connecting to ncu.dl.sourceforge.net|140.115.17.45|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 31421410 (30M) [application/zip]
Remote file exists.
复制代码

否则显示

复制代码
Spider mode enabled. Check if remote file exists.
--2012-02-16 16:23:06--  http://downloads.sourceforge.net/project/boost/boost-do
cs/1.47.0/boost_1_47_pdf222.zip?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fboos
t%2F
Resolving downloads.sourceforge.net... 216.34.181.59
Connecting to downloads.sourceforge.net|216.34.181.59|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
Remote file does not exist -- broken link!!!
复制代码

 

7、增加重连次数用Wget -tries

在网络有问题的情况次选项尤其有用,默认是wget会重连20次以成功完成下载,我们可以把他增加为我们期待的次数

wget --tries=100 DOWNLOAD-URL


8、下载多个文件/URLS用wget -i

首先把所有要下载的文件或者URL存到一个记事本中,比如aa.txt,里面内容如下

URL1
URL2
URL3
URL4

接下来输入如下代码就可以批量下载了

wget -i aa.txt

 

9、下载一个完整的网站用wget -mirror

以下实现是你想完整的下载一个网站用于本地浏览

wget --mirror  -p --convert-links -P LOCAL-DIR WEBSITE-URL

--mirror:打开镜像选项

-p:下载所有用于显示给定网址所必须的文件

--convert-links:下载以后,转换链接用于本地显示

-P LOCAL_DIR:保存所有的文件或目录到指定的目录下

 

10、保存输出到日志文件而不是标准输出用wget -o

当你想要把信息保存到一个文件而不是在终端显示时用以下代码。

wget -o download.log DOWNLOAD-URL

 

11、当超过指定大小时终止下载用wget -Q

当文件已下载10M,此时你想停止下载可以使用下面的命令行

wget -Q10m -i FILE-WHICH-HAS-URLS

注意:此选项只能在下载多个文件时有用,当你下载一个文件时没用。

 

12、下载特定文件类型的文件用wget -r -A

你可以用此方法下载一下文件:

~从一个网站下载所有图片
~从一个网站下载所有视频

~从一个网站下载所有PDF文件

wget -r -A.pdf http://url-to-webpage-with-pdfs/

 

13、指定不下载某一类型的文件用wget --reject

你发现一个网站很有用,但是你不想下载上面的图片,因为太占流量,此时你可以用如下命令。

wget --reject=gif WEBSITE-TO-BE-DOWNLOADED


14、用wget实现FTP下载

匿名FTP下载用

wget ftp-url

有用户名和密码的FTP下载

wget --ftp-user=USERNAME --ftp-password=PASSWORD DOWNLOAD-URL

 

15、wget下载有的资源时必须用选项 --no-check-certificate,否则会提示没有认证不允许下载

wget --no-check-certificate URL

 

技巧:

  • $ wget -r -np -nd http://example.com/packages/

这条命令可以下载 http://example.com 网站上 packages 目录中的所有文件。其中,-np 的作用是不遍历父目录,-nd 表示不在本机重新创建目录结构。

  • $ wget -r -np -nd --accept=iso http://example.com/centos-5/i386/

与上一条命令相似,但多加了一个 --accept=iso 选项,这指示 wget 仅下载 i386 目录中所有扩展名为 iso 的文件。你也可以指定多个扩展名,只需用逗号分隔即可。

  • $ wget -i filename.txt

此命令常用于批量下载的情形,把所有需要下载文件的地址放到 filename.txt 中,然后 wget 就会自动为你下载所有文件了。

  • $ wget -c http://example.com/really-big-file.iso

这里所指定的 -c 选项的作用为断点续传。

  • $ wget -m -k (-H) http://www.example.com/
  • 该命令可用来镜像一个网站,wget 将对链接进行转换。如果网站中的图像是放在另外的站点,那么可以使用 -H 选项。



====================================================================================


如果我们想下载ftp里面某个目录里面的所有文件,

wget -r ftp://10.8.8.8/movie/

呵呵,等吧!下完了,发觉有些不对劲,怎么出来个10.8.8.8的目录,进去看看,又是一个movie,哦,wget将目录结构和网站标题都给记录下来了,不要??没有问题!比如说还是这个例子

wget -r -nd ftp://10.8.8.8/movie/

结果什么目录都没有了,faint!怎么会这样?呵呵,你如果想要这样就让它这样吧,否则使用

wget -r -nH ftp://10.8.8.8/movie/

恩?movie也不要?OK,那就这样

wget -r -nH --cut-dirs=1 ftp://10.8.8.8/movie/

断线了?超时了? 加个 -c 继续

wget -c -r -nH --cut-dirs=1 ftp://10.8.8.8/movie/

我们下载这里面所有的宏包,呵呵

wget -r -k http://www.ctan.org/tex-archive/macros/latex/

-k表示将连接转换为本地连接。但是现在同样有上面的问题啊,那就把你需要的加上吧,另外也许你根本不需要向下走那么多层,比如,我们就要到第二层,那么

wget -r -l2 -k http://www.ctan.org/tex-archive/macros/latex/

现在新的问题是,由于网页有一个排序功能,很讨厌,因为下载的时候把网页重复了好多次,那么我们可使用-A和-R开关控制下载类型,并且可以使用通配符,呵呵,现在随心所欲了吧

wget -r -R ".htm\?*" -k http://www.ctan.org/tex-archive/macros/latex/

这次没有那种网页了吧?-R的意义在于拒绝下载匹配类型的文件,-A表示仅仅接受的文件类型,如-A "*.gif"将仅下载gif图片,如果有多个允许或者不允许,可以使用,分开。

那么,我们现在在使用代理服务器,怎么办呢?呵呵,很高兴你选择了wget,你可以使用它的配置文件,环境变量来利用代理。这里推荐使用环境变量,如在 bash里面我们可以把天天用的proxy加到.bash_profile里面,这是Linux标准写法(很多软件都用的,什么apt-get,yum等等)

export http_proxy=http://10.20.30.40:8080

然后,proxy就默认打开了,如果需要暂时关闭,可以使用

wget --proxy=off -r -k http://www.ctan.org/tex-archive/macros/latex/

当然,写一个.wgetrc文件也可以,该文件可以从/usr/local/etc里面找到,里面有很详细的注释,我就不多说了。

下载网页的时候比较麻烦的事情是,有的网页被同时指向了很多遍,那么为了避免多次下载,我们使用

wget -nc -r -k http://www.ctan.org/tex-archive/macros/latex/

可以避免这件事情。为了不被有的连接指向非http://www.ctan.org/tex-archive/macros/latex/ 内层目录,我们还应该加上

wget -nc -np -r -k http://www.ctan.org/tex-archive/macros/latex/

避免下载非该目录里面的文件,这也避免了到不同的host上面去。当然,如果你希望有这个功能,在多个host之间跳来跳去的下载,可以使用

wget -nc -np -H -r -k http://www.ctan.org/tex-archive/macros/latex/

使得可以在多个host之间span,同时-I和-X可以使得我们仅仅跟踪某些目录或者不跟踪某些目录。如果某些HTML里面你需要的东西不是由这种东西作出来的,你就得使用--follow-tags和--ignore-tags了。

嘿,我有个文件里面都是连接,怎么办?要是不是html你只需要

wget -i your.file

如果是,那也不繁

wget -F -i your.file

下面是补充:

wget -m ftp://username:password@IPAddress/*

-m  做站点镜像时的选项,如果你想做一个站点的镜像,使用这个选项,它将自动设定其他合适的选项以便于站点镜像;等价于 -r -N -l inf -nr.

你可能感兴趣的:(wget使用)