在这篇博文中,您将学习:
什么是cURL?
cURL 是一个命令行工具,您可以使用它通过网络协议传输数据。cURL的名字代表‘Client URL’,也写作‘curl’。这个流行的命令使用URL语法在服务器之间传输数据。cURL由‘libcurl’驱动,一个免费且易于使用的客户端URL传输库。
为什么使用cURL有优势?
此命令的多功能性意味着您可以将cURL用于多种用例,包括:
- 用户认证
- HTTP提交
- SSL连接
- 代理支持
- FTP上传
cURL的最简单‘用例’是使用支持的协议下载和上传整个网站。
cURL协议
虽然cURL支持的协议列表很长,但如果您不提供特定协议,它将默认使用HTTP。以下是支持的协议列表:
DICT | FILE | FTP |
FTPS | GOPHER | HTTP |
HTTPS | IMAP | IMAPS |
LDAP | POP3 | RTMP |
RTSP | SCP | SFTP |
SMB | SMBS | TELNET |
TFTP |
安装cURL
cURL命令在Linux发行版中默认安装。
如何检查您是否已经安装了cURL?
1. 打开您的Linux控制台
2. 输入‘curl’,然后按‘回车’。
3. 如果您已经安装了cURL,您将看到以下消息:
curl: try 'curl --help' for more information
4. 如果您尚未安装cURL,您将看到以下消息:‘command not found’。然后您可以转到您的发行版包并安装它(更多详细信息见下文)。
如何使用cURL
cURL的语法非常简单:
curl [options] [url]
例如,如果您想下载一个网页:webpage.com,只需运行:
curl www.webpage.com
然后该命令将在您的终端窗口中给您该页面的源代码。请注意,如果您不指定协议,cURL将默认为HTTP。以下是如何定义特定协议的示例:
curl ftp://webpage.com
如果您忘记添加://,cURL会猜测您想使用的协议。
我们简要讨论了此命令的基本用法,但您可以在cURL文档站点上找到选项列表。这些选项是您可以对URL执行的可能操作。选择一个选项时,它会告诉cURL对您列出的URL采取什么操作。URL告诉cURL需要在何处执行此操作。然后cURL允许您列出一个或多个URL。
要下载多个URL,请在每个URL前添加-0和一个空格。您可以在一行中执行此操作,也可以为每个URL写不同的行。您还可以通过列出页面下载部分URL。例如:
curl.exe -O http://example.com/page{1,4,6}.html
保存下载内容
您可以使用两种不同的方法保存URL的内容到文件:
1. -o方法:允许您添加一个保存URL的文件名。此选项具有以下结构:
curl -0 filename.html http://example.com/file.html
2. -O方法:在此处您无需添加文件名,因为此选项允许您将文件保存为URL名称。要使用此选项,您只需在URL前加-O。
恢复下载
可能会发生您的下载在中途停止。在这种情况下,重新写入命令并在开头添加-C选项:
curl -C - -O http://website.com/file.html
为什么cURL如此受欢迎?
cURL真的是命令中的‘瑞士军刀’,专为复杂操作而设计。然而,也有一些替代品,例如‘wget’或‘Kurly’,适用于简单任务。
cURL是开发人员的最爱,因为它几乎适用于每个平台。有时它甚至是默认安装的。这意味着,无论您运行什么程序/作业,cURL命令都应该可以工作。
此外,如果您的操作系统不到十年,您可能已经安装了cURL。您还可以在浏览器中阅读文档,并查看cURL文档。如果您运行的是最新版本的Windows,您可能已经安装了cURL。如果没有,请查看这篇Stack Overflow上的帖子了解更多安装方法。
使用cURL和代理
有些人可能更喜欢将cURL与代理结合使用。这样做的好处包括:
- 增加成功管理来自不同地理位置的数据请求的能力。
- 显著增加可以同时运行的并发数据作业数量。
为实现这一目标,您可以利用cURL内置的‘-x’和‘(–proxy)’功能。以下是将您使用的代理与cURL集成的命令行示例:
$ curl -x 026.930.77.2:6666 http://linux.com/
在上面的代码片段中——‘6666’是端口号的占位符,而‘026.930.77.2’是IP地址。
值得知道的是:cURL与目前使用的大多数常见代理类型(包括HTTP、HTTPS和SOCKS)兼容。
如何更改User-Agent
User-Agent是允许目标网站识别请求信息的设备的特征。目标网站可能要求请求者满足特定条件才能返回所需的目标数据。这可能涉及设备类型、操作系统或使用的浏览器。在这种情况下,收集数据的实体将希望模拟目标网站的理想‘候选人’。
例如,假设您正在针对的网站‘偏好’请求方使用Chrome浏览器。为了使用cURL获取所需的数据集,您需要模拟此‘浏览器特征’如下:
curl -A "Goggle/9.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Chrome/103.0.5060.71" https://getfedora.org/
使用cURL进行网页抓取
专业提示:请确保遵守网站的规则,一般不要尝试访问受密码保护的内容,这在大多数情况下是非法的,至少是不受欢迎的。
您可以使用cURL自动化网页抓取时的重复过程,帮助您避免繁琐的任务。为此,您需要使用PHP。以下是我们在GitHub上找到的一个示例:
<?php
/**
* @param string $url - the URL you wish to fetch.
* @return string - the raw HTML response.
*/
function web_scrape($url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
/**
* @param string $url - the URL you wish to fetch.
* @return array - the HTTP headers returned.
*/
function fetch_headers($url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 1);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
// Example usage:
// var_dump(get_headers("https://www.example.com"));
// echo web_scrape('https://www.example.com/');
?>
当您使用cURL抓取网页时,有三个选项应使用:
- 初始化会话
curl_init($url)
- 执行会话
curl_exec()
- 关闭会话
curl_close()
其他应使用的选项包括:
- 设置要抓取的URL
CURLOPT_URL
- 告诉cURL将抓取的页面保存为变量。(这使您能够从页面中提取所需的内容。)
CURLOPT_RETURNTRANSFER
总结
虽然cURL是一个强大的网页抓取工具,但它需要公司花费宝贵的开发人员时间来进行数据收集和数据清理。这就是Bright Data的用武之地。Bright Data是领先的网页数据平台,提供广泛的产品来满足网页抓取需求。Bright Data的产品包括面向开发人员的网页抓取IDE,内置网站解锁自动化的自动化浏览器,以及数据集市场,适用于那些希望接收准确数据而不是自己抓取的人,还有超过7200万个可靠的代理。