curl 抓取网页(常用PHP做网页抓取、模拟请求业务的朋友应该都知道)
优采云 发布时间: 2021-10-04 02:30curl 抓取网页(常用PHP做网页抓取、模拟请求业务的朋友应该都知道)
使用PHP进行网页爬取和模拟请求服务的朋友应该都知道Curl是神器。
curl是一个非常强大的开源库,支持http、https、telnet、ftp等多种网络协议。在PHP中,我们可以通过curl的一系列功能轻松处理会话请求。
虽然常用,但还是要百度好几次才能正常使用……今天对curl做一个总结,供以后使用,也把总结分享给大家。
使用CURL发送会话请求的基本流程
CURL 是典型的“活得好不粘”的工具。它虽然功能强大,但它的使用却非常简单和成熟。
使用 CURL 发送会话请求一般有以下几个步骤:
初始化连接句柄
配置 CURL 选项
执行请求并返回结果
释放连接句柄
简单点:建立连接 -> 制定规则 -> 请求数据 -> 断开连接
简单,直接,从不拖延!
使用CURL模拟数据请求的GET方法
在get模式下进行数据请求的方式有很多种。
对于简单的调用链接和返回数据,其实可以理解为读取一个html文件。
可以使用file_get_contents() 和fopen() 等函数轻松解决。
但是对于需要控制COOKIE内容、头部信息等的get请求,就需要牺牲curl来解决!
function curl_get_https($url){
$curl = curl_init(); // 建立连接句柄,启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true); // 从证书中检查SSL加密算法是否存在
$tmpInfo = curl_exec($curl); // 执行请求并返回结果
curl_close($curl); // 释放连接句柄,关闭URL请求
return $tmpInfo; // return返回结果
}
使用 CURL 模拟 POST 进行数据请求
通用,获取更多数据的接口,一般使用post作为请求参数的传输方式
/* PHP CURL HTTPS POST */
function curl_post_https($url,$data){
// 模拟提交数据函数
$curl = curl_init(); // 建立连接句柄,启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对*敏*感*词*来源的检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
$tmpInfo = curl_exec($curl); // 执行操作
if (curl_errno($curl)) {
echo 'Errno'.curl_error($curl);//捕抓异常
}
curl_close($curl); // 释放连接句柄,关闭CURL会话
return $tmpInfo; // return返回结果
}
使用PHP开源库curl的curl_setopt方法,配合各种配置参数,可以轻松模拟各种请求。
使用 CURL 处理上传和下载服务
留个坑待补
使用 CURL 抓取远程链接图片
留个坑待补