cURL:它是什么,以及如何将其用于网页抓取

cURL 是一个多功能的命令,程序员用它进行数据收集和数据传输。但是,您如何利用 cURL 进行网页抓取呢?本文将帮助您入门。
1 min read
cURL:它是什么,以及如何将其用于网页抓取

在这篇博文中,您将学习:

什么是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与代理结合使用。这样做的好处包括:

  1. 增加成功管理来自不同地理位置的数据请求的能力。
  2. 显著增加可以同时运行的并发数据作业数量。

为实现这一目标,您可以利用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万个可靠的代理。