Linux-curl命令
Ax curl入门
支持http、https、ftp在内众多协议,还支持POST、cookie、认证、限速等特性。
curl现在文件输出到stdout,回显进度信息到stderr,要想避免显示进度,使用–silent
a 基本使用
1.将下载的文件输出到终端
curl URL
–silent不显示进度
-O 中URL中解析文件名
–progress 进度显示为#
b 高级选项
1.断点续传
curl URL -C offset
curl -C - URL 自动计算出继续的位置
2.用curl设置参照页字符串
curl --referer Referer_URL target_URL
参照页是标识用户是从哪个页面来到当前页面的。
3.用curl设置cookie
curl URL --cookie "user=slynux;pass=hack"
如果要将cookie另存为一个文件,使用–cookie-jar选项
curl URL --cookie-jar cookie_file
4.用curl设置用户代理字符串
curl URL --user-agent "Mozilla/5.0"
其它头部信息 -H 来传递
curl -H "Host:www.goold.com" -H "Accept-language: en" URL
5.限定curl可占用带宽
curl URL --limit-rate 20k
6.指定最大下载量
curl URL --max-filesize bytes
7.用curl进行认证
-u username:password
指定用户名密码。
curl -u user:pass URL
不写密码则提示输入密码
8.只打印响应头部信息 –head or -I
curl -I URL
Bx 应用
a 爬取网页图片
传送门:爬取网页图片
b 跟踪网页变动
#!/bin/bash
if [ $# -ne 1 ];
then
echo -e "$Usage: $0 URL\n"
exit 1;
fi
first_time=0
# 非首次运行
if [ ! -e "last.html" ];
then
first_time=1
# 首次运行
fi
curl --silent $1 -o recent.html
if [ $first_time -ne 1 ];
then
changes=$(diff -u last.html recent.html)
if [ -n "$changes" ];
then
echo -e "Changes:\n"
echo "$changes"
else
echo -e "\nWebsite has no changes"
fi
else
echo "[First run] Archiving.."
fi
cp recent.html last.html
第一次运行
然后我们进入网站根文件进行追加内容
再次运行脚本
Cx 参考
[1] 《Linux Shell脚本攻略》第二版 Shantanu Tushar\Sarath Lakshman 著