wget是一个强力方便的命令行方式下的下载工具。本文介绍了wget的基本用法。
网络用户有时候会遇到需要下载一批文件的情况,有时甚至需要把整个网站下载下来或者制作网站的镜像。在Windows下的用户都比较熟悉 Teleport,webzip等等网站下载工具,实际上Linux中也完全可以做到这样的功能,那就是利用wget工具。wget是一个命令行工具,用来下载网络文件或者整个网站,它具有自动重试、断点续传、支持代理服务器等等强大的功能。它可以完全替代ftp客户端。wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上。
wget虽然功能强大,但是使用起来还是比较简单的,基本的语法是:
wget [参数列表] URL
下面就结合具体的例子来说明一下wget的用法。
当文件特别大或者网络特别慢的时候,往往一个文件还没有下载完,连接就已经被切断,此时就需要断点续传。wget的断点续传是自动的,只需要使用-c参数,例如:
wget -c http://the.url.of/incomplete/file
使用断点续传要求服务器支持断点续传。-t参数表示重试次数,例如需要重试100次,那么就写-t 100,如果设成-t 0,那么表示无穷次重试,直到连接成功。-T参数表示超时等待时间,例如-T 120,表示等待120秒连接不上就算超时。
如果有多个文件需要下载,那么可以生成一个文件,把每个文件的URL写一行,例如生成文件download.txt,
然后用命令:
wget -i download.txt
这样就会把download.txt里面列出的每个URL都下载下来。(如果列的是文件就下载文件,如果列的是网站,那么下载首页)
wget只能处理利用用户名/密码方式限制访问的网站,可以利用两个参数:
--http-user=USER 设置HTTP用户–http-passwd=PASS 设置HTTP密码
对于需要证书做认证的网站,就只能利用其他下载工具了,例如curl。
如果用户的网络需要经过代理服务器,那么可以让wget通过代理服务器进行文件的下载。此时需要在当前用户的目录下创建一个 .wgetrc 文件。文件中可以设置代理服务器:
http-proxy = 111.111.111.111:8080ftp-proxy = 111.111.111.111:8080
分别表示http的代理服务器和ftp的代理服务器。如果代理服务器需要密码则使用:
–proxy-user=USER 设置代理用户–proxy-passwd=PASS 设置代理密码
这两个参数。
使用参数–proxy=on/off 使用或者关闭代理。
如果你需要在你的办公电脑上通过和其他同事共享的一个连接来下载一些很大的文件,而且你希望你的同事不会因为网络速度的减慢而收到影响,那你就应该尽量避开高峰时段。当然,不需要在办公室里等到所以人都走掉,也不需要在家里用完晚饭后还惦记着要上网下载一次。
用at来就可以很好的定制工作时间:
$ at 2300
warning: commands will be executed using /bin/sh
at> wget http://place.your.url/here
at> press Ctrl-D
这样,我们设定了下载工作在晚上11点进行。为了使这个安排能够正常进行,请确认atd这个后台程序正在运行。
当你需要下载大量的数据,而且你又没有享有足够的带宽,这个时候你会经常发现在你安排的下载任务还没有完成,一天的工作却又要开始了。
作为一个好同事,你只能停掉了这些任务,而开始另外的工作。然后你又需要反复地重复使用”wget -c”来完成你的下载。这样肯定太繁琐了,所以最好是用crontab来自动执行。创建一个纯文本文件,叫做”crontab.txt”,包含下面的内容:
0 23 * * 1-5 wget -c -N http://place.your.url/here
0 6 * * 1-5 killall wget
这个crontab文件指定某些任务定期地执行。前五列声明是什么时候执行这个命令,而每行的剩余部分则告诉crontab执行什么内容。
前两列指定了每天一到晚上11点就开始用wget下载,一到早上6点就停止一切wget下载。第三四列的*表示每个月的每一天都执行这个任务。第五列则指定了一个星期的哪几天来执行这个程序。 –”1-5″表示从星期一到星期五。
这样在每个工作日的晚上11点,下载工作开始,到了上午的6点,任何的wget任务就被停掉了。你可以用下面的命令来执行crontab:
$ crontab crontab.txt
wget的这个“-N”参数将会检查目标文件的时间戳,如果匹配了,下载程序就会停止,因为它说明整个文件已经下载完全了。
用“crontab -r”可以删除这个计划安排。我已经多次采用这种方法,通过共享的电话拨号来下载过很多的ISO镜像文件,还是比较实用的。
有些网页每天都要根据要求变化好几次。所以从技术上讲,目标不再是一个文件,它没有文件长度,因此”-c”这个参数也就失去了意义。
例如:一个PHP写的并且经常变动的linux周末新闻网页:
$ wget http://lwn.net/bigpage.php3
我办公室里的网络条件经常很差,给我的下载带了很大的麻烦,所以我写了个简单的脚本来检测动态页面是否已经完全更新了。
#!/bin/bash
#create it if absent
touch bigpage.php3
#check if we got the whole thing
while ! grep -qi bigpage.php3
do
rm -f bigpage.php3
#download LWN in one big page
wget http://lwn.net/bigpage.php3
done
这个脚本能够保证持续的下载该网页,直到网页里面出现了””,这就表示该文件已经完全更新了.
如果你要通过ssl来上网,那么网站地址应该是以 https: 来开头的,在这样的情况下你就需要另外一种下载工具,叫做curl,它能够很容易获得.有些网站迫使网友在浏览的时候必须使用cookie。所以你必须从在网站上得到的那个Cookie里面得到“Cookie:”这个参数.这样才能保证下载的参数正确。对于lynx和Mozilla的Cookie的文件格式,用下面的:
$ cookie=$( grep nytimes ~/.lynx_cookies |awk {printf(”%s=%s;”,$6,$7)} )
就可以构造一个请求Cookie来下载 http://www.nytimes.com 上的内容。当然,你要已经用这个浏览器在该网站上完成注册。
w3m使用了一种不同的,更小巧的Cookie文件格式:
$ cookie=$( grep nytimes ~/.w3m/cookie |awk {printf(”%s=%s;”,$2,$3)} )
现在就可以用这种方法来下载了:
$ wget –header="Cookie: $cookie" http://www.nytimes.com/reuters/technology/tech-tech-supercomput.html
或者用curl工具:
$ curl -v -b $cookie -o supercomp.html http://www.nytimes.com/reuters/technology/tech-tech-supercomput.htm
到现在为止我们下载的都是单个文件或者是整个网站.有的时候我们需要下载某个网页上链接的大量文件,但没有必要把它整个网站都镜像下来.比如说我们想从一个依次排列的100首歌里面下载前20首.注意,这里”–accept”和”–reject”参数是不会起作用的,因为他们只对文件操作起作用.所以一定要用”lynx -dump”参数来代替。
$ lynx -dump ftp://ftp.xxx.com/pub/lg/ |grep gz$ |tail -10 |awk {print $2} > urllist.txt
lynx的输出结果可以被各种GNU文本处理工具过虑.在上面的例子里,我们的链接地址是以”gz”结尾的,并且把最后10个文件地址放到 urllist.txt文件里.然后我们可以写一个简单的bash脚本来自动下载这个文件里的目标文件:
$ for x in $(cat urllist.txt)
> do
> wget $x
> done
这样我们就能够成功下载Linux Gazette网站(ftp://ftp.xxx.com/pub/lg/)上的最新10个论题。
这一类参数主要提供软件的一些基本信息;
-V,–version 显示软件版本号然后退出;
-h,–help 显示软件帮助信息;
-e,–execute=COMMAND 执行一个 “.wgetrc”命令
-b, –background 启动后转入后台执行,记录文件写在当前目录下”wget-log”文件中。
以上每一个功能有长短两个参数,长短功能一样,都可以使用。需要注意的是,这里的-e参数是执行一个.wgettrc的命令,.wgettrc命令其实是一个参数列表,直接将软件需要的参数写在一起就可以了。
这类参数定义软件log文件的输出方式等;
-o,–output-file=FILE 将软件输出信息保存到文件;
-a,–append-output=FILE 将软件输出信息追加到文件;
-d,–debug 显示输出信息;
-q,–quiet 不显示输出信息;
-i,–input-file=FILE 从文件中取得URL;
下载参数定义下载重复次数、保存文件名等;
-t,–tries=NUMBER 是否下载次数(0表示无穷次)
-O –output-document=FILE 下载文件保存为别的文件名
-nc, –no-clobber 不要覆盖已经存在的文件
-c, –continue 启用断点传输,接着下载没下载完的文件
-N,–timestamping 只下载比本地新的文件
-T,–timeout=SECONDS 设置超时时间
-w, –wait=SECONDS 两次尝试之间间隔SECONDS秒
–waitretry=SECONDS 在重新链接之间等待1…SECONDS秒
–random-wait 在下载之间等待0…2*WAIT秒
-Q, –quota=NUMBER 设置下载的容量限制
-E, –html-extension将所有text/html文档以.html扩展名保存
-m, –mirror 等价于 -r -N -l inf -nr
-p, –page-requisites 下载显示HTML文件的所有图片递归下载中的包含和不包含(accept/reject)
-Y,–proxy=on/off 关闭代理
目录参数主要设置下载文件保存目录与原来文件(服务器文件)的目录对应关系;
-nd –no-directories 不建立目录
-x,–force-directories 强制建立目录
-nH, –no-host-directories 不创建主机目录
-P, –directory-prefix=PREFIX 将文件保存到目录 PREFIX/…
HTTP参数设置一些与HTTP下载有关的属性;
–http-user=USER 设置HTTP用户
–http-passwd=PASS 设置HTTP密码
–proxy-user=USER 设置代理用户
–proxy-passwd=PASS 设置代理密码
在下载一个网站或者网站的一个目录的时候,我们需要知道的下载的层次,这些参数就可以设置;
-r,–recursive 下载整个网站、目录(小心使用)
-k, –convert-links 转换非相对链接为相对链接(下载网页时很有用)
-K, –backup-converted 在转换文件X之前,将之备份为 X.orig
-l,–level=NUMBER 下载层次
-np, –no-parent不要追溯到父目录
下载一个网站的时候,为了尽量快,有些文件可以选择下载,比如图片和声音,在这里可以设置;
-A,–accept=LIST 可以接受的文件类型
-R,–reject=LIST 拒绝接受的文件类型
-D,–domains=LIST 可以接受的域名
–exclude-domains=LIST 拒绝的域名
-L,–relative 只下载相对链接
–follow-ftp 只下载HTML文档中的FTP链接
-H,–span-hosts 可以下载外面的主机
-I,–include-directories=LIST 允许的目录
-X,–exclude-directories=LIST 拒绝的目录
分享到:
相关推荐
Earthdata网站的TRMM数据wget工具下载详细方法,可以批量下载几万条数据,十分方便。
wget for ,通过CMD下载文件
wget for windows,这个是linux的下载工具的windows版本,很好用。
wget下载程序,支持断点续传,非常方便。还可以支持批量下载。
使用DOS命令进行批量下载很好用,而且速度很快!
NRCS - National Resources Conservation Service NRCS是一个著名的图库,包含2000多张1500*2100大小图像。是 从事图像处理的重要数据来源。图像分JPG与TIF两种格式,来自 ...新建任务地址中,进而可批量下载。
通过在cmd中利用linux下的wget下载工具,和grep字符串分析工具,获得图片地址,批量后台下载.有问题请联系本人
Xshell的安装下载和常用的命令
##A岛串内图片批量下载脚本 使用方法: 终端运行 python AdaoIMGdownloader.py [串ID] [0或1;0为匿名岛,1为备胎岛] 如 python AdaoIMGdownloader.py 6035851 0 使用备注: 目前只在OSX平台下测试通过 请通过命令行...
解决方案:使用香港服务器wget下载文件,然后scp传至其他服务器。 Linux系统互传文件 当前机器—拷贝到—>远程机器 scp 本地Linux系统文件路径 远程用户名@IP地址:远程系统文件绝对路径名 scp -r ./beijing/ ubuntu@...
http://wilmer.gaast.net/main.php/axel.html 安装: wget http://wilmer.gaast.net/downloads/axel-1.0b.tar.gz tar -zxvf axel-1.0b.tar.gz cd axel-1.0b ./configure make;make install
wget https://github.com/FlyPythons/KEGGTools/archive/master.zip unzip mater.zip 例子 下载KEGG数据库 从KEGG下载KEGG生物的信息 python3 download_organism.py --url ...
1、pip下载安装 1.1 pip下载 # wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb" --no-check-certificate # wget ...
为Linux 64位安装#wget https://github.com/dimkouv/massivedl/releases/download/v1.2/massivedl_linux_amd64 chmod + x bulkdl_linux_amd64 mv massdl_li bulkdl并行下载大量文件。 针对Linux 64位wget安装#...
rsync 是一个快速增量文件传输工具,它可以用于在同一主机备份内部的备分,我们还可以把它作为不同主机网络备份工具之用。...相对tar和wget来说,rsync 也有其自身的优点,比如速度快、安全、高效;
5.批量下载文件 curl http://www.xxx.com/action/[1-100].html > /dev/null 这个最适合爬自己网站的缓存了 文件下载后重新命名和类正则使用,下载后的文件是demo1-001.html curl -o #1_#2 http://www.xxx.com/~{...
简单的批量下载器 一个基于Java的简单批处理下载程序,它可以利用其他批处理下载工具(例如“ wget”和“ Invoke-Webrequest”),因为该工具能够从非标准化的URL下载。 特征: Ability to specify a list of URLs...
注意:需要wget才能下载golang tarball 安装兼容版本的golang 生成hakrevdns并将二进制文件放在/usr/local/bin chmod +x install.sh ./install.sh 用法 最基本的用法是将IP地址列表简单地传递到该工具中,例如: ...
从邮件列表中大量退订unsubscribe.sh... 这个bash脚本主要基于grep和wget命令,因此您应该安装它们。 它应该适用于任何类 UNIX 系统,包括 Windows 上的 MSYS2。 但是grep类型的命令存在多种变体,如果出现问题,请尝试
批量删除 安装 推荐的: 下载 或者 mkdir ~ /ToDo cd ToDo wget https://raw.githubusercontent.com/Aayush9029/TermDo/master/src/termdo.py alias termdo= ' cd ~/ToDo; python3 termdo.py; cd ~ ' 一线复制粘贴 ...