wget和curl的区别
wget和curl是在没有任何GUI或软件的情况下用于HTTP请求的命令,我们使用Linux中的终端提供相应的输出或消息。这些命令对于网页抓取、网页抓取、测试RESTful api等非常有用。
Curl
Curl是一个免费的开源命令行实用工具,它允许用户和开发人员在没有任何UI交互的情况下传输数据。广泛应用于路由器、手机等。
Protocols Supported : HTTP/HTTPS、FTP、SFTP、SCP、IMAP、LDAP/LDAPS、SMB/SMB、TELNET、POP3、GOPHER等。
Wget
wget或GNU wget是另一个开源的免费命令行工具,用于使用HTTP/HTTPS、FTP和FTPS传输文件。
功能 :递归下载,带宽控制,恢复中断传输,后台下载,递归镜像文件和目录,等等。
安装 wget 和curl
输入如下命令安装wget:
sudo apt-get install wget
要安装curl,输入以下命令:
sudo apt-get install curl
示例: 在下面的例子中,我们将通过curl和wget请求HTTP/HTTPS并下载一个网站页面。
使用curl命令保存一个网页。
curl https://geeksforgeeks.org -o geeks.html
输出: 该文件被下载为geeks.html
使用wget命令保存一个网页。
wget https://practice.geeksforgeeks.org/jobs
输出
我们使用curl命令获得了来自wget和geeks.html的作业文件。
示例 2: 在下面的示例中,我们将通过curl和wget学习FTP协议请求,并下载文件。
要从域名(比如GeeksforGeeks徽标)从wget下载文件,可以使用以下命令。
wget https://media.geeksforgeeks.org/wp-content/cdn-uploads/20210420155809/gfg-new-logo.png
输出信息如下:—
使用curl命令,我们可以指定名称,例如,logo,然后按如下方式下载:
Curl https://media.geeksforgeeks.org/wp-content/cdn-uploads/20210420155809/gfg-new-logo.png -o logo.png
输出如下:
Curl还支持上传文件到web。我们需要添加标志-T来指定上传。我们使用以下命令将文件上载到任何URL。
curl -T ” geeks_logo.png ” ftp://www.geeksforgeeks.org/upload/to/url/
示例 3: Recursive downloading
Wget工具支持递归下载,我们添加了递归标志。
wget –recursive https://practice.geeksforgeeks.org/jobs
此命令将所有相关资源下载到一个以网页URL命名的文件夹中。输出如下:
终端(下载进行中)
已下载的文件及文件夹
在robots.txt中添加的文件路径将被忽略。要关闭这个特性,添加-e标志,如下:
Wget -e robots=off https://practice.geeksforgeeks.org/jobs
下载的文档采用广度优先搜索的形式。但是可以通过使用-l标记并设置深度来重写它。默认最大深度为5。
Wget‐l=1‐‐recursive‐‐no-parent https://practice.geeksforgeeks.org/jobs
wget和curl的区别
wget | curl |
---|---|
Wget是一个简单的传输命令行实用程序。 | Curl有更多的功能。libcurl库可以用作GUI库。 |
对不同协议的支持有限。 | 对协议有更多的支持。它支持双向HTTP。 |
递归下载支持。其他功能包括带宽控制、恢复中断传输、后台下载、递归镜像文件和目录等。 | 不支持递归下载。 |
Wget支持的协议:HTTP、HTTPS和FTP。 | 支持curl的协议:DICT、FILE、FTP、FTPS、Gopher、HTTP、HTTPS、IMAP、IMAPS、LDAP、LDAPS、POP3、POP3S、RTMP、RTSP、SCP、SFTP、SMB、SMBS、SMTP、SMTPS、Telnet和TFT。 |
wget更适用于Linux操作系统。 | Curl可以在多个平台上使用。 |