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
技巧:
这条命令可以下载 http://example.com 网站上 packages 目录中的所有文件。其中,-np 的作用是不遍历父目录,-nd 表示不在本机重新创建目录结构。
与上一条命令相似,但多加了一个 --accept=iso 选项,这指示 wget 仅下载 i386 目录中所有扩展名为 iso 的文件。你也可以指定多个扩展名,只需用逗号分隔即可。
此命令常用于批量下载的情形,把所有需要下载文件的地址放到 filename.txt 中,然后 wget 就会自动为你下载所有文件了。
这里所指定的 -c 选项的作用为断点续传。
如果我们想下载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.