wget的几种典型用法(介绍典型的)
Wget可以下载http和ftp网站文件,小命令但功能强,它的参数很多,但常用的不多。
一. 最简单的用法
wget http://download.xxx.com/soft/software.tar.gz
二. 下载整个网站
wget --mirror [--convert-links] http://www.xxxx.org/
或短写参数:
wget -m [-k] http://www.xxxx.org
-m / --mirror:镜像整个网站,它与“-r -l inf -N”这三个参数一起用效果相同
-r / --recursive:以递归方式抓取
-l depth / --level=depth:递归的深度,缺省最大值为5,0或inf表示无限多
-N / --timestamping:时间戳,不知道有什么用
-k / --convert-links:在全部下载完成之后,修改已下载页面中的链接,如果链接所指向的文件也下在本地了,就指向这个文件,否则,就指向http上原来的文件
三. 下载特定类型的文件
下载图片:
wget -m -p -np -nd --accept=jpg,jpeg,png http://www.xxx.com/top/page.html
-np / --no-parent:不下载指向上层的链接
--reject=avi,rmvb:不下载'.avi','.rmvb'类型的文件
--accept=jpg,jpeg:只下载'.jpg','.jpeg'类型的文件
四. 下载MP3
无人看守下载:
把文件的URL,如在百度搜的mp3的URL,存成一个文件,如songs,执行:
wget --input-file=songs --continue --timeout=20 --tries=5
即逐个下载songs中的URL,断点续传,对每个文件20秒超时重试5次
即时并行下载MP3 (后台执行):
写一脚本实现更好的功能:
echo 'Usage:'
echo ' Enter "URL filename" for each file to download.'
echo ' Enter "bye" to exit.'
while read -p '> ' url name; [ "$url" != "bye" ]
do
if [ "$name" != "" ]
then OUT="-O $name.${url##*.}"
else OUT=""
fi
if [ "${url##*.}" == "$url" ]
then echo "\"$url\" is an unexpected URL."
else wget --continue --timeout=20 --tries=5 --background --output-file=/dev/null $url $OUT
fi
done
echo ' enjoy!'
存为文件“downsong”,并赋之予可执行权限。
用法:
./downsong
> http://music.xxx.com/zyfx.mp3 自由飞翔
> http://music.xxx.com/qtbhl.wma 秋天不回来
> http://music.xxx.com/zgh.mp3
......
输完敲“bye”退出,wget会在后台同时下载各个文件,这种方法比较快,用“ps aux | grep wget”查看进程。
五. 其它有用的参数说明
--tries=number / -t number:指定连接失败时重试次数,0或inf表示无限重试,缺省值为20。但如果遇到“连接被拒绝”或“文件没找到(404)”之类的错误,则不重试
--timeout=seconds / -T seconds:指定seconds秒连接超时
--input-file=file / -i file:读取file中的URL下载,如果用‘-’代替file,则从标准输入读取URL
--output-document=file / -O file:指定输出文件名为file
--no-clobber / -nc:通常在遇到下下来的文件重名,wget将为后下的文件加上‘.1’,‘.2’等加以区分。如果用了这个参数,则一旦后下的文件将与先下的同名,将不再下载后下的文件而保留先下的不变
--no-directories / -nd:保存文件时,即使原来不在一起的文件,也不创建文件夹,所有文件全放在当前目录下
--page-requisites / -p:下载html文件时,把与它有关的图片,声音,脚本等相关文件一同下下来
--continue / -c:启用断点续传
--background / -b:在后台下载,不占用命令行。此时若没用‘-o’指定把输出信息送到哪个文件,会自动把输出信息送入当前目录下的wget-log中
--output-file=logfile / -o logfile:指定输出信息送入logfile
--quiet / -q:关闭输出信息
# 参考资料:wget manpage.