CodeGym /课程 /Docker SELF /使用 `curl` 和 `wget` 下载文件

使用 `curl` 和 `wget` 下载文件

Docker SELF
第 8 级 , 课程 4
可用

使用 curlwget 下载文件

1. 认识 curl

你有没有遇到过这种情况:面试时需要从终端下载一个文件,但你忘记怎么操作了?今天我们就来学习如何使用 curlwget,这些工具将成为你处理网络数据的好帮手。

这些工具可以用来下载网页、文件、发送 HTTP 请求、操作 API,甚至执行自动化脚本。我们来一起了解它们的功能、优势以及常见的使用场景。

curl 是一个命令行工具,用于通过网络协议传输数据。它的强大之处在于灵活性:支持 20 多种协议(HTTP、HTTPS、FTP、SCP,甚至 SMTP)。开发者称它为处理互联网的“瑞士军刀”,真的很贴切。

curl 的基本语法

curl [选项] URL

简单来说,输入 curl 命令,指定一个地址,你就能看到结果了。一起来看看怎么用。

下载网页

假设你想下载 Google 的首页,可以这样做:

curl http://www.google.com

屏幕上会显示网页的 HTML 代码。如果你想研究网站的结构,或者进行相关的自动化操作,这很有用。

将内容保存到文件

如果不想让这些文本流充满屏幕,可以将结果保存到文件中:

curl -o google.html http://www.google.com

选项 -o(output)告诉 curl 我们想将输出重定向到一个文件。现在 HTML 代码已经保存到 google.html。想听个笑话吗?把这个文件发给朋友,然后告诉他你“下载了整个互联网”。

下载文件

想象一下,你需要从网络上下载一个文件(比如一个 .zip)。curl 在这方面非常给力:

curl -O http://example.com/file.zip

-o 不同,选项 -O 会用 URL 中的原始文件名保存文件。如果你要从同一个来源下载很多文件,这就非常有用了。

HTTP 认证

有时文件或 API 资源的访问受登录名和密码保护。这种情况下,可以这样用带 -u 选项的 curl

curl -u username:password http://example.com/private-data

这在使用受限 API(比如 GitHub 或 Docker Registry)时特别有用。

通过 API 下载

curl 最酷的功能之一就是操作 API。例如,你需要向服务器发送一个请求,返回 JSON 格式的数据:

curl -X GET "https://api.exchangerate-api.com/v4/latest/USD"

这里 -X 选项指定 HTTP 请求的方法(GET、POST、DELETE 等)。这对集成外部服务的自动化很有帮助。


2. 什么是 wget

如果 curl 是瑞士军刀,那么 wget 就是推土机。它的主要任务是下载文件。跟 curl 的主要区别是,wget 专为可靠下载大文件设计,同时支持断点续传,这在网络连接不好的情况下非常方便。

wget 的基本语法

wget [选项] URL

简单下载文件

wget http://example.com/file.zip

这个命令会下载文件并用原始名字保存在当前目录下。简单又高效。

用其他名字保存

如果你不喜欢文件的原始名字,可以自己设置一个:

wget -O newfile.zip http://example.com/file.zip

断点续传

假设你在下载一个超大的文件,结果网络断了。别担心:只要用 -c (continue) 参数:

wget -c http://example.com/largefile.iso

wget 会从下载中断的地方继续。而且即使过了几天,只要服务器支持这种模式,它也一样能继续下载。

下载整个网站

是的,用 wget 可以下载整个网站(或其副本)。只需要用 --mirror 参数:

wget --mirror http://example.com

这个命令会下载网站并保持目录结构。这样你就有一个网站的 "镜像" 能离线使用。


3. 对比 curlwget

功能 curl wget
支持大量协议 仅限HTTP/HTTPS和FTP
自动续传下载 否(可以通过脚本实现)
处理API
文件管理的方便性 一般 优秀
下载整个网站

总的来说,如果你需要处理API或者一些特定功能,那就用curl。如果只是下载文件,wget会是更好的选择。


4. 实际应用

文件下载与处理

结合 wget 和我们的文本操作技能:

wget -O data.txt http://example.com/data.txt
cat data.txt | grep "keyword" | awk '{print $2, $4}'

在这里,我们下载了文件,根据关键字过滤了内容,并提取了需要的列。

使用 API

curl 下载汇率数据并找到所需的币种:

curl -s "https://api.exchangerate-api.com/v4/latest/USD" | grep "EUR"

这非常有用,比如你想搭建一个自动化的货币兑换系统。

自动化更新

假设你需要每天下载一个文件的更新。以下是一个简单脚本的例子:

#!/bin/bash
wget -O updates.zip http://example.com/daily-updates.zip
unzip -o updates.zip -d /path/to/updates

保存这个脚本并将其添加到 cron。现在,它就会自动执行了——是不是很棒?


5. 常见错误和特点

错误 403 (Forbidden):

如果服务器要求额外的 headers(比如 User-Agent),会出现这个错误。可以这样解决:

curl -A "Mozilla/5.0" http://example.com

重定向:

如果服务器将你重定向到另一个 URL,在 curl 中添加 -L 标志:

curl -L http://example.com

SSL 错误:

有时候 wgetcurl 会提示 SSL 错误。可以禁用证书验证(但这样不安全!):

wget --no-check-certificate https://example.com
curl -k https://example.com

有了这强大的工具套件,你已经准备好在终端中攻克互联网了。没有任何文件或 API 能逃过你的掌控——是时候开始下载、处理和自动化啦!

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION