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命令我这里我选了集中典型的做了演示,其他的命令可以自己尝试看看。
领取专属 10元无门槛券
私享最新 技术干货