curl 抓取网页(PHPheader调试很有用的原因及解决办法(一))

优采云 发布时间: 2022-02-24 03:19

  curl 抓取网页(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 示例有所收获。

  总结

  如果你觉得编程之家网站的内容还不错,欢迎你把编程之家网站推荐给你的程序员朋友。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线