📜  在PHP中使用 cURL 进行网页抓取(1)

📅  最后修改于: 2023-12-03 15:37:36.847000             🧑  作者: Mango

在PHP中使用 cURL 进行网页抓取

cURL 是一个强大的用于传输数据的工具,可以实现 HTTP、HTTPS、FTP、TELNET 等多种协议的传输。在 PHP 中,通过 cURL 扩展,我们可以方便地使用 PHP 代码来调用 cURL 命令进行远程传输数据,并可以实现网页抓取功能。本文将介绍在 PHP 中使用 cURL 进行网页抓取的方法。

安装 cURL 扩展

在开始使用 cURL 进行网页抓取前,我们需要先安装 cURL 扩展。在一般情况下,cURL 扩展已经默认被 PHP 所包含,不过我们需要确保该扩展已经加载。如果没有,我们可以通过以下命令来进行安装:

sudo apt-get install php-curl
网页抓取

在安装完成 cURL 扩展后,我们可以通过以下 PHP 代码来进行网页抓取:

$url = 'http://www.example.com';
$cURL = curl_init();
curl_setopt($cURL, CURLOPT_URL, $url);
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($cURL);
curl_close($cURL);
echo $output;

该代码中,我们首先定义了我们需要抓取的网页的 URL,并设置了 cURL 的选项,包含 URL 和返回网页内容。当我们执行该代码时,便可以从该 URL 中获取到页面的 HTML 代码并打印在屏幕上。

设置请求头

为了模拟浏览器的行为,我们有时需要在请求中设置一些请求头信息。例如,我们需要设置 Referer 和 User-Agent 等信息。可以通过以下方式添加请求头:

$url = 'http://www.example.com';
$cURL = curl_init();
curl_setopt($cURL, CURLOPT_URL, $url);
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);

// 设置请求头信息
curl_setopt($cURL, CURLOPT_REFERER, 'http://www.example.com');
curl_setopt($cURL, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; AS; rv:11.0) like Gecko');

$output = curl_exec($cURL);
curl_close($cURL);
echo $output;
POST 请求

在有些情况下,我们需要使用 POST 请求来发送数据。我们可以通过以下代码实现 POST 请求:

$url = 'http://www.example.com';
$cURL = curl_init();
curl_setopt($cURL, CURLOPT_URL, $url);
curl_setopt($cURL, CURLOPT_POSTFIELDS, 'a=1&b=2');
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);

// 设置请求头信息
curl_setopt($cURL, CURLOPT_REFERER, 'http://www.example.com');
curl_setopt($cURL, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; AS; rv:11.0) like Gecko');

$output = curl_exec($cURL);
curl_close($cURL);
echo $output;

在该代码中,我们通过 CURLOPT_POSTFIELDS 选项来设置 POST 请求的数据。当我们执行该代码时,便可以将数据发送到服务器,并获得服务器的返回结果。

HTTPS 请求

在某些情况下,我们需要进行 HTTPS 请求。针对 HTTPS 请求,我们需要在代码中添加以下选项:

curl_setopt($cURL, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($cURL, CURLOPT_SSL_VERIFYPEER, false);

在该代码中,我们通过 CURLOPT_SSL_VERIFYHOST 和 CURLOPT_SSL_VERIFYPEER 来关闭 SSL 证书的验证,从而实现对 HTTPS 网站的访问。

总结

本文介绍了在 PHP 中使用 cURL 进行网页抓取的方法。通过 curl_init() 初始化,curl_setopt() 设置选项,curl_exec() 执行请求,curl_close() 关闭资源等步骤,我们可以方便地使用 cURL 扩展来实现网页抓取。同时,在设置请求头、POST 请求、HTTPS 请求中,我们也提供了相应的代码示例,希望可以对 PHP 程序员有所帮助。