指令:wget、curl、lynx、axel
wget url #下载数据写入文件,下载的文件名与url中的文件名保持一致,下载信息或进度写入stdout
wget url1 url2 url3 #下载多个文件
wget ftp://example.com/test.img -o download.img -o log #下载时日志或进度写入日志文件,输出文件为download.img
wget -t 5 url #下载文件,参数-t指定重试次数
wget --limit-rate 20k http://example.com/file.iso #对wget限速
wget -Q 100m url1 url2 #使用参数-Q或者--quota指定最大下载配额为100M,当下载的文件超过100M时,立即停止下载。
wget -c url #如果使用wget进行的下载在完成之前被中断,可以利用选项-c从断点开始继续下载。即断点续传。
wget --mirror exameple.com #递归收集网页上的所有URL链接并逐个下载,即整站下载
wget -r -N -l DEPTH url #同上,-l指定页面层级DEPTH,-N允许对文件使用时间戳,-r表示递归
wget --user username --password passwd url #访问需要认证的页面
wget URL -post-data "name=value" -o output.html #post数据到URL,并将返回的数据写入文件output.html
wget -r http://www.website.com #递归下载整个网站
wget -r -A png,pdf http://www.website.com #从一个网站下载指定类型的文件(例如 pdf 和 png).
curl URL --silent #将下载文件输出到终端,--silent选项是的curl命令不显示进度信息
curl http://example.org > index.html #cURL并不把下载的数据写入文件,而是写入标准输出stdout,再从stdout重定向到文件
curl http://exameple.com/index.html --silent -o #选项-o用来将下载数据写入文件,而非写入标准输出。此命令将创建文件index.html
curl URL --silent -o new_filename #选项-o用来将下载的数据写入指定名称的文件中
curl http://example.org -o index.html --progress #使用--progress代替--silent,显示形如#的进度条
curl URL/file -C offset #指定偏移量offset来下载部分文件,offset是以字节为单位的整数。
curl -C -URL #断点续传。选项-C - 可以推算出正确地续传位置
curl --referer http://google.com http://baidu.com #选项--referer指定参考页http://google.com
curl http://example.com --cookie "user=test;pass=test" #用curl存储HTTP操作过程中的用到的cookie。cookie以键值对的形式给出,多个键值对用分号分隔
curl URL --cookie-jar cookie_file #选项--cookie-jar表示将cookie另存为一个文件
curl URL --user-agent "Mozilla/5.0" #选项--user-agent或选项-A设置用户代理信息(浏览器的用户代理)
curl -H "HOST:www.test.org" -H "Accept-language:en" URL #选项 -H "头部信息" 用来传递过个HTTP头部信息。
curl URL --limit-rate 20k #选项--limit-rate限制curl的下载速度
curl URL --max-filesize bytes #选项--max-filesize指定可下载的最大文件大小。若文件大小超出限制,命令返回一个非0的退出吗,若正常运行,则返回0
curl -u username:password http://test.com #选项-u完成HTTP或FTP认证
curl -u username http://test.com #只使用username,后续运行提示输入密码
curl -I http://test.com #选项-I可以只打印HTTP头部信息,而不下载文件
curl URL -d "postvar=postdata&postvar2=postdata2" #post数据到URL
curl --data "name=value&name2=value2" URL -o output.html #post数据到URL,将返回的数据写入文件output.html
lynx -dump http://www.test.com/index.html | grep -o "Rank-*" | sed 's/Rank-//; s/\[[0-9]\+\]//' | sort -nk 1 | awk '{ for(i=3;i<=NF;i++){ $2=$2" "$i } print "%-4s $s\n", $1,$2; }' > test.txt #lynx是一个命令行的网页浏览器,访问网址内容并写入文件
axel -n 5 http://www.xxx.com/downloadfile.zip #5个线程下载
----------------------------------------
图片抓取及下载:
filename:img_downloader.sh
运行:./img_downloader.sh http://www.test.com -d images
#!/bin/bash
if [ $# -ne 3 ];
then
echo "Usage: $0 URL -d DIRECTORY"
exit -1
fi
for i in {1..4}
do
case $1 in
-d) shift; directory=$1; shift ;;
*) url=${url:-$1}; shift;;
esac
done
mkdir -p $directory;
baseurl=$(echo $rul | egrep -o "https?://[a-z.]+")
curl -s $url | egrep -o "<img src=[^>]*>" | sed 's/<img src=\"\([^"]*\).*/\1/g' > /tmp/$$.list
sed -i "s|^/|$baseurl/|" /tmp/$$.list
cd $directory;
while read filename;
do
curl -s -O "$filename" --silent
done < /tmp/$$.list
----------------------------------------
网页相册生成器:
filename:web_images.sh
注:要使用convert需要iamgemagick支持。sudo apt-get install imagemagick
#!/bin/bash
echo "Creating album.."
mkdir -p thumbs
cat <<EOF > index.html
<html>
<head>
<style>
body
{
width:470px;
margin:auto;
border:1px dashed grey;
padding:10px;
}
img
{
margin:5px;
border:1px solid black;
}
</style>
</head>
<body>
<center><h1> #Album title </h1></center>
<p>
EOF
for img in *.jpg;
do
convert "$img" -resize "100x" "thumbs/$img"
echo "<a href=\"$img\" ><img src=\"thumbs/$img\" title=\"$img\" />
</a>" >> index.html
done
cat <<EOF >> index.html
</p>
</body>
</html>
EOF
echo Album gennrated to index.html
-------------------------------------------------
查找网站中的无效链接:
filename:find_broken.sh
if [ $# -eq 2]
then
echo -e "$Usage $0 URL\n"
exit -1
fi
echo Broken links:
mkdir /tmp/$$.lynx
cd /tmp/$$.lynx
lynx -traversal $1 > /dev/null
count =0;
sort -u reject.dat > links.txt
while read link;
do
output=`curl -I $link -s | grep "HTTP/.*OK"`;
if [[ -z $output ]];
then
echo $link;
let count++
fi
done < links.txt
[ $count -eq 0 ] && echo No broken links found.
-----------------------------------------------------