curl在windows下的安装和curl命令详解

curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具。

语法:# curl [option] [url]

这样就就可以获取到指定url中的文件,比如一个简单的例子:

一般这种工具在Linux中使用广泛,在Linux中进行安装只需要使用命令:

yum install curl 这个命令就可以进行安装然后使用了。

但我们想在本地的windows中使用这个工具怎么办呢?下面我们就来讨论下如何在windows环境中使用这一个工具。

1.下载curl的压缩包

下载地址:https://curl.haxx.se/download.html

下载后进行解压到文件夹,记住这个文件夹,接下来要进行相关环境配置

2.curl环境配置

在系统的环境配置中配置curl运行环境,新增CURL_HOME变量,变量值为你刚刚解压的路径(跟jdk环境配置一样)

然后再path中添加路径:

新建

保存退出,打开命令行,输入命令:curl --help

在控制台中可以看到百度的网页的信息已经在控制台中显示出来了

3.curl命令详解

1、基本用法

2、保存访问的网页

a:使用linux的重定向功能保存

完成后在该目录下就可以看到刚刚扒的百度的首页

b:可以使用curl的内置option:-o(小写)保存网页

删除刚刚扒的百度的首页baidu.html,然后使用该命令重新进行扒

你再看看刚刚的文件夹是不是baidu.html又存在了

c:也可以抓取一个网页中的某一个子文件

3、测试网页返回值

# curl -o /dev/null-s -w % www.linux.com

Ps:在脚本中,这是很常见的测试网站是否正常的用法

4、指定proxy服务器以及其端口

proxy代理下载,是通过连接一台中间服务器间接下载url网页的过程,不是url直接连接网站服务器下载

免费的中间台历服务器又很多,这里使用米扑代理(因为每天提供20个免费的代理),选择一台中国的免费代理服务器为例,来介绍proxy代理抓取网页:

118.25.226.228:9999(ip为218.107.21.252;port为9999,中间以冒号“:”隔开,组成一个套接字

抓取百度首页,注意将上次抓取的baidu.html删除掉

再次打开,可i一看到baidu.html(由于上面指定了代理过来的名为aaaaa)再次存在了

打开可以看到是百度首页的信息

注:-x表示代理服务器(ip:port),即curl先连接到代理服务器118.25.226.228:9999,然后再通过118.25.226.228:9999下载百度首页,最后118.25.226.228:9999把下载的百度首页传给curl至本地(curl不是直接连接百度服务器下载首页的,而是通过一个中介代理来完成)

关于代理服务器,可以推荐米扑,上面有各个地区免费的开放代理点

5、cookie

有些网站是使用cookie来记录session信息。对于chrome这样的浏览器,可以轻易处理cookie信息,但在curl中只要增加相关参数也是可以很容易的处理cookie

a:保存http的response里面的cookie信息。内置option:-c(小写)

执行后cookie信息就被存到了cookiec.txt里面了

打开可以看到cookie信息已经保存到本地了

注:以下的一些命令,有些我不做演示

b:保存http的response里面的header信息。内置option: -D

执行后cookie信息就被存到了cookied.txt里面了

注意:-c(小写)产生的cookie和-D里面的cookie是不一样的。

c:使用cookie

很多网站都是通过监视你的cookie信息来判断你是否按规矩访问他们的网站的,因此我们需要使用保存的cookie信息。内置option: -b

6、模仿浏览器

有些网站需要使用特定的浏览器去访问他们,有些还需要使用某些特定的版本。curl内置option:-A可以让我们指定浏览器去访问网站

# curl -A "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.0)" http://www.baidu.com

这样服务器端就会认为是使用IE8.0去访问的

7、下载文件

我们以百度首页的一张图片为例

a:利用curl下载文件。

#使用内置option:-o(小写)

# curl -o baidu.jpg https://www.baidu.com/img/bd_logo1.png

#使用内置option:-O(大写)

# curl -O

https://www.baidu.com/img/bd_logo1.png

这样就会以服务器上的名称保存文件到本地

b:循环下载

有时候下载图片可以能是前面的部分名称是一样的,就最后的尾椎名不一样

# curl -O

https://www.baidu.com/img/bd_logo[1-5].png

这样就会把db_logo1,db_logo2,db_logo3,dodo4,dodo5全部保存下来

c:下载重命名

# curl -O https://www.baidu.com/img//bd_logo[1-5].png

由于下载的hello与bb中的文件名都是bd_logo1,bd_logo2,bd_logo3,bd_logo4,bd_logo5。因此第二次下载的会把第一次下载的覆盖,这样就需要对文件进行重命名。

# curl -o #1_#2.JPG

https://www.baidu.com/img//bd_logo[1-5].png

这样在hello/bd_logo1.JPG的文件下载下来就会变成hello_bd_logo1.JPG,其他文件依此类推,从而有效的避免了文件被覆盖

d:通过ftp下载文件

curl可以通过ftp下载文件,curl提供两种从ftp中下载的语法

# curl -O -u 用户名:密码 ftp:https://www.baidu.com/img/bd_logo1.png#

curl -O ftp://用户名:密码@https://www.baidu.com/img/bd_logo1.png

e:显示下载进度条

# curl -# -O https://www.baidu.com/img/bd_logo1.png

f:不会显示下载进度信息

8、断点续传

在windows中,我们可以使用迅雷这样的软件进行断点续传。curl可以通过内置option:-C同样可以达到相同的效果

如果在下载bd_logo1.PNG的过程中突然掉线了,可以使用以下的方式续传

# curl -C -O https://www.baidu.com/img/bd_logo1.png

9、上传文件

curl不仅仅可以下载文件,还可以上传文件。通过内置option:-T来实现

# curl -T db_logo1.JPG -u 用户名:密码 ftp:服务器地址

这样就向ftp服务器上传了文件bd_logo1.JPG

10、显示抓取错误

以上就是curl工具在windows中的安装和curl命令的使用,有一些curl命令我这里我选了集中典型的做了演示,其他的命令可以自己尝试看看。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181121G02W0C00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券