网页内容抓取工具(本文用实例深度演示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。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线