CURL 例子

来自艾毕思知识库
跳转至: 导航搜索

在使用wget获取需要的网页有困难时,可以用cURL试试。

下载单个文件

$ curl http://www.ibssz.com

获取该域名的默认首页文件内容,并显示在标准输出中,比如终端屏幕。


<!DOCTYPE html>

<!-- WordPress Theme by WPExplorer (http://www.wpexplorer.com) -->
<html lang="en-US">
<head>
	<link rel="shortcut icon" href="http://www.ibssz.com/wp-content/themes/wpex-pytheas/favicon.ico" />
	<meta charset="UTF-8" />
	<meta name="viewport" content="width=device-width" />
	<title> 艾毕思</title>

...

保存该内容到文件

$ curl http://www.ibssz.com > ibssz_com.html

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 23318    0 23318    0     0  52429      0 --:--:-- --:--:-- --:--:-- 52400

可用-#参数改变上面的显示内容为进度条

该内容保存在当前目录的ibssz_com.html文件中。

这种方法使用的是shell的重定向生成输出文件,我们也可以使用cURL提供的参数实现保存一个页面。

提醒,参数oO对于某些重写的页面会无效,如果获取不到文件长度,可以使用上面的不带参数方式来保存页面


$ curl -o wiki_index.html http://www.ibssz.com/wiki/首页

将指定URL保存为-o参数携带的文件名。上例将 http://www.ibssz.com/wiki/首页 页面下载后保存在wiki_index.html文件中。

$ curl -O http://www.ibssz.com/wiki/首页

大写O参数直接使用网页文件的原名作为本地文件名保存。上例将 http://www.ibssz.com/wiki/首页 页面下载后保存在“首页”文件中。

下载多个文件

$ curl -O URL1 -O URL2

将多个页面的URL列在curl后面以默认名字保存。如:

$ curl -O http://www.ibssz.com/wiki/首页 -O http://www.ibssz.com/wiki/FreeBSD启动_停止_重启网络服务

会连续下载“首页”和“FreeBSD启动_停止_重启网络服务”两个页面。同样也可以用-o手工指定保存文件名。

跟随重定向

cURL默认不跟随页面重定向的页面跳转。 $ curl http://www.ibssz.com/wiki 输出:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://www.ibssz.com/wiki/">here</a>.</p>
</body></html>

因为该URL重定向到了http://www.ibssz.com/wiki/首页,cURL只返回了HTTP头信息,这不是我们想要的。

$ curl -L http://www.ibssz.com/wiki

<!DOCTYPE html>
<html lang="zh" dir="ltr" class="client-nojs">
<head>
<meta charset="UTF-8" />
<title>艾毕思知识库</title>
...

得到实际访问页面内容。


$ curl -LO http://www.ibssz.com/wiki

保存实际页面内容。

限速下载

$ curl --limit-rate 1024B -O http://www.ibssz.com/wiki/首页

对于大文件下载可能会占用全部带宽,--limit-rate xxx可限制平均下载速度,上例每秒1K字节左右。

续传

$ curl -C - -O http://www.ibssz.com/wiki/首页

下载大文件中断时,可以用-C -参数尝试断点续传,如果服务器支持的话~

代理下载

$ curl -x proxy.test.com:1234 http://google.com

-x参数指定代理服务器地址(域名)和端口通过代理服务器下载。