curl 抓取网页(PHPheader调试很有用的原因及解决办法(一))
优采云 发布时间: 2022-02-24 03:19curl 抓取网页(PHPheader调试很有用的原因及解决办法(一))
[header_size] => 312
[request_size] => 61
[文件时间] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[总时间] => 0.172
[namelookup_time] => 0.016
[连接时间] => 0.063
[pretransfer_time] => 0.063
[大小上传] => 0
[size_download] => 14658[speed_download] => 85220
[speed_upload] => 0
[下载内容长度] => 14658
[上传内容长度] => 0
[starttransfer_time] => 0.125
[重定向时间] => 0
[certinfo] => 数组
(
)
[redirect_url] =>
)
2、这些信息对于调试非常有用。例如,cURL在爬取时,由于网络等原因,爬取的数据可能不完整。这就是我们如何从获得的数据中计算文件大小的方法。 ,然后与 curl_getinfo() 得到的比较。如果大小相等,则确定下载正确,否则重复尝试。
我们来看一个抓图的例子:
代码如下:
PHP
header("Content-Type: image/png");
//1、初始化
$ch = curl_init();
//2、设置选项,包括URL
curl_setopt($ch,"");
curl_setopt($ch,1);
curl_setopt($ch,1);
//3、执行并获取内容
$res = curl_exec($ch);
//获取信息
$info = curl_getinfo($ch);
//4、释放资源
curl_close($ch);
file_put_contents("d:/aa.png",$res);
$size = filesize("d:/aa.png");
if ($size != $info['size_download']) {
echo "下载的数据不完整,请重新下载";
} 否则 {
echo "下载数据完成";
}
3、使用 POST 方法在 cURL 中发送数据
代码如下:
PHP
$ch = curl_init();
$data = array('name'=>'kelly','age'=>27,'sex'=>1);
curl_setopt($ch,"");
curl_setopt($ch,1);
//设置为帖子
curl_setopt($ch,CURLOPT_POST,1);
//添加post变量
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
$res = curl_exec($ch);
curl_close($ch);
回声 $res;
你可以用这个方法模拟一条消息,也可以坐在浇水机器人上,思路是一样的
4、使用 cURL 上传文件
代码如下:
'美女',"上传"=>"@a.zip");
$ch = curl_init();
curl_setopt($ch,"");
curl_setopt($ch,1);
curl_setopt($ch,$data);
$res = curl_exec($ch);
curl_close($ch);
回声 $res;
注意:发送文件时,在文件名前加上@,并使用完整路径
5、cURL 设置
其实cURL有很多配置选项,这些选项是cURL的灵魂,通过setopt()来设置,下面总结了一些比较常见和重要的配置项,希望读者以后使用cURL。帮助:
CURLOPT_AUTOREFERER:根据location:重定向时,自动在header中设置Referer:信息
CURLOPT_COOKIESESSION:启用后,cURL 将紧密传递会话 cookie,而忽略其他 cookie
CURLOPT_HEADER:将头信息作为数据流输出
CURLOPT_INFILESIZE:设置上传文件的字节大小
CURLOPT_MAXCONNECTS:允许的最大连接数
CURLOPT_MAXREDIRS:指定 HTTP 重定向的最大数量
CURLOPT_COOKIE:设置 HTTP 请求的“cookie:”部分的内容。多个 cookie 后跟一个分号和分号后的一个空格
CURLOPT_POSTFIELDS:所有数据都使用HTTP协议中的“POST”操作发送文件,文件名前加@前缀并使用完整路径
......
更多配置项请参考PHP手册
cURL 很强大,它是一个通用库,不是 PHP 独有的。
希望读者通过学习这篇博文中的几个经典 cURL 示例有所收获。
总结
如果你觉得编程之家网站的内容还不错,欢迎你把编程之家网站推荐给你的程序员朋友。