网页内容抓取工具(本文用实例深度演示curl的详细用法(图))
优采云 发布时间: 2022-01-19 21:08网页内容抓取工具(本文用实例深度演示curl的详细用法(图))
介绍
curl 是一个收录命令行工具和库的包,用于使用 URL 语法传输数据。
curl 支持多种协议,如 DICT、FILE、FTP、FTPS、Gopher、HTTP、HTTPS、IMAP、IMAPS、LDAP、LDAPS、POP3、POP3S、RTMP、RTSP、SCP、SFTP、SMTP、SMTPS、Telnet 和TFTP。
本文通过示例深入演示 curl 的详细用法。
下载单个文件
下面的命令将获取 URL 的内容并将其显示在 STDOUT 中(即在您的终端上)。
curl URL
要将输出存储到文件中,您可以将其重定向如下。这还将显示一些额外的下载统计信息。
curl URL > output.html
将 cURL 输出保存到文件
我们可以使用 -o/-O 选项将 curl 命令的结果保存到文件中。
curl -o gettext.html URL
现在,页面 URL 将保存在名为“gettext.html”的文件中。您还会注意到,当使用 -o 选项运行 curl 时,它会显示一个下载进度表。
当你使用 curl-O(大写 O)时,它会在文件名后面加上 URL,并将内容保存在本地。
注意:当 cURL 必须向终端写入数据时,会禁用进度表,以避免打印时出现混乱。我们可以使用 '>'|'-o'|'-O' 选项将结果移动到文件中。
一次下载多个页面
我们可以通过在命令行上指定 URL 来一次下载多个文件。
curl -O URL1 -O URL2
以下命令将下载 a.html 和 b.html 并以相应的名称将它们保存在当前目录中。
curl -O URL/a.html -O URL/b.html
当我们如上所述从同一服务器下载多个文件时,cURL 将尝试重用连接。
使用 -L 选项跟踪请求标头 HTTP 位置
默认情况下,cURL 不跟随 HTTP Location 标头。它也称为重定向。
当请求的网页被移动到另一个位置时,将发送 HTTP Location 标头作为响应,它会显示实际网页的位置。
例如,当用户在浏览器中键入时,它会自动重定向到。这是基于 HTTP Location 标头完成的,如下所示。
curl a.com
302 Moved
302 Moved
The document has moved
<A HREF="http://b.com">here</A>
上述信息还表明请求地址被永久重定向(302) 到另一个地址。
我们可以使用 -L 选项坚持 curl 跟随重定向,使其下载最终目标页面。
curl -L a.com
http
使用 curl-C 选项,您可以恢复由于某种原因停止的下载。这在下载大文件但网络中断时很有帮助。
如果我们使用“-C -”选项,那么 cURL 将找到断点并开始恢复下载。
我们也可以给出一个偏移量'-C'。将从源文件的开头跳过给定的偏移字节。
下面测试一下。使用 curl 开始下载大文件,然后在下载之间按 Ctrl-C 停止下载。
curl -O URL
############## 42.1%
# 下面的数字表示进度条,下载在 42.1% 处停止。
使用“curl -C -”,我们可以从中断的地方继续下载。下载进度现在将从 42.1% 继续。
curl -C - -O URL
############### 42.1%
限制下载速度
您可以使用 -limit-rate 选项限制传输的数据量,将最大传输速率指定为参数。
curl --limit-rate 50k -O UTL
上述命令将数据传输限制为 50kb/sec。在短时间内,curl 可以使用更高的传输速率。但平均而言,它将约为 50kb/秒。可以对大文件进行速度测试。
仅当文件在给定时间之前/之后修改时才下载
我们可以在 curl 中使用 -z 选项来获取特定时间后修改的文件。这适用于 FTP 和 HTTP。
curl -z 2012-03-04 URL
仅当 URL 文件晚于给定日期和时间时,上述命令才会下载。
curl -z -2012-03-04 URL
上面的命令正好相反,仅当 URL 文件早于给定日期时间时才下载。
有关日期表达式支持的各种语法,请参阅 man curl_getdate。