资讯专栏INFORMATION COLUMN

curl 多线程抓取

lordharrd / 3193人阅读

摘要:多线程抓取多线程并行网址超时时间创建多个语柄设置超时时间定向级别这里不要,加块效率防止死循环耗死这段是根据网上的写法当无数据,当正在接受数据时当无数据时或请求暂停时,获得返回信息返回头信息关闭语柄释放资源计算当前时间测试一下,三个网址调

php$url){
   $conn[$k]=curl_init($url);

        curl_setopt($conn[$k], CURLOPT_TIMEOUT, $timeout);//设置超时时间
        curl_setopt($conn[$k], CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)");
        curl_setopt($conn[$k], CURLOPT_MAXREDIRS, 7);//HTTp定向级别
        curl_setopt($conn[$k], CURLOPT_HEADER, 0);//这里不要header,加块效率
        curl_setopt($conn[$k], CURLOPT_FOLLOWLOCATION, 1); // 302 redirect
        curl_setopt($conn[$k],CURLOPT_RETURNTRANSFER,1);
        curl_multi_add_handle ($mh,$conn[$k]);
  }
  //防止死循环耗死cpu 这段是根据网上的写法
  do {
   $mrc = curl_multi_exec($mh,$active);//当无数据,active=true
  } while ($mrc == CURLM_CALL_MULTI_PERFORM);//当正在接受数据时
  while ($active and $mrc == CURLM_OK) {//当无数据时或请求暂停时,active=true
   if (curl_multi_select($mh) != -1) {
    do {
     $mrc = curl_multi_exec($mh, $active);
    } while ($mrc == CURLM_CALL_MULTI_PERFORM);
   }
  }

  foreach ($array as $k => $url) {
     curl_error($conn[$k]);
       $res[$k]=curl_multi_getcontent($conn[$k]);//获得返回信息
       $header[$k]=curl_getinfo($conn[$k]);//返回头信息
       curl_close($conn[$k]);//关闭语柄
       curl_multi_remove_handle($mh  , $conn[$k]);   //释放资源  
  }

  curl_multi_close($mh);
  $endtime = getmicrotime();
  $diff_time = $endtime - $startime;

  return array("diff_time"=>$diff_time,
      "return"=>$res,
     "header"=>$header  
     );

 }
 //计算当前时间
 function getmicrotime() {
     list($usec, $sec) = explode(" ",microtime());
     return ((float)$usec + (float)$sec);
 }

 //测试一下,curl 三个网址
 $array = array(
    "http://www.weibo.com/",
    "http://www.renren.com/",
    "http://www.qq.com/"
    );
 $data = Curl_http($array,"10");//调用
 var_dump($data);//输出
//如果POST的数据大于1024字节,curl并不会直接就发起POST请求
//发送请求时,header中包含一个空的Expect。curl_setopt($ch, CURLOPT_HTTPHEADER, array("Expect:"));
?>

curl 多线程抓取

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/21010.html

相关文章

  • php爬虫:知乎用户数据爬取和分析

    摘要:背景说明小拽利用的写的爬虫,实验性的爬取了知乎用户的基本信息同时,针对爬取的数据,进行了简单的分析呈现。本程序抓取的是知乎对外提供用户访问的个人信息页面抓取过程需要携带用户才能获取页面。 背景说明:小拽利用php的curl写的爬虫,实验性的爬取了知乎5w用户的基本信息;同时,针对爬取的数据,进行了简单的分析呈现。demo 地址 php的spider代码和用户dashboard的展现代码...

    Jioby 评论0 收藏0
  • php爬虫:知乎用户数据爬取和分析

    摘要:背景说明小拽利用的写的爬虫,实验性的爬取了知乎用户的基本信息同时,针对爬取的数据,进行了简单的分析呈现。本程序抓取的是知乎对外提供用户访问的个人信息页面抓取过程需要携带用户才能获取页面。 背景说明:小拽利用php的curl写的爬虫,实验性的爬取了知乎5w用户的基本信息;同时,针对爬取的数据,进行了简单的分析呈现。demo 地址 php的spider代码和用户dashboard的展现代码...

    honhon 评论0 收藏0
  • php爬虫:知乎用户数据爬取和分析

    摘要:背景说明小拽利用的写的爬虫,实验性的爬取了知乎用户的基本信息同时,针对爬取的数据,进行了简单的分析呈现。本程序抓取的是知乎对外提供用户访问的个人信息页面抓取过程需要携带用户才能获取页面。 背景说明:小拽利用php的curl写的爬虫,实验性的爬取了知乎5w用户的基本信息;同时,针对爬取的数据,进行了简单的分析呈现。demo 地址 php的spider代码和用户dashboard的展现代码...

    saucxs 评论0 收藏0
  • 【php爬虫】百万级别知乎用户数据爬取与分析

    摘要:本程序是抓取知乎的用户数据,要能访问用户个人页面,需要用户登录后的才能访问。经过查阅资料得知,是因为知乎对图片做了防盗链处理。最终的结果是,用了一个周末就抓取了万的用户数据。 代码托管地址:https://github.com/hoohack/zhihuSpider 这次抓取了110万的用户数据,数据分析结果如下:showImg(https://segmentfault.com/img...

    maxmin 评论0 收藏0
  • 爬虫 - 收藏集 - 掘金

    摘要:使用的爬虫知乎用户数据爬取和分析阅读掘金背景说明小拽利用的写的爬虫,实验性的爬取了知乎用户的基本信息同时,针对爬取的数据,进行了简单的分析呈现。 Python 知乎爬虫(最新) - 后端 - 掘金 环境:python3.x外部依赖包:requestsgithub项目地址 主要的问题:模拟登陆: 知乎现在改用https请求了,数据加密,但是问题不大,重要的是网页数据改动了,而且在请求时后...

    zzbo 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<