php下curl模拟百度蜘蛛进行采集

起因:

        自己公司的商城,社区O2O需要采集一些评论,目标是美团,大众点评网的用户评论。

        思路就是先找到网站的分页地址,分析参数,访问url获取内容,匹配内容入库。这里主要分享过大众点评防止采集的curl伪造代码。

        

    /**
     * cURL获取网页内容
     * @author Yusure  哥哥要变百度蜘蛛了
     * @param  [type] [param]
     * @return [type] [description]
     */
    private function _GetContent( $url )
    {
        $this->ch = curl_init();
        $this->ip = '220.181.108.91';  // 百度蜘蛛
        $this->timeout = 15;
        curl_setopt($this->ch,CURLOPT_URL,$url);
        curl_setopt($this->ch,CURLOPT_TIMEOUT,0);
        //伪造百度蜘蛛IP  
        curl_setopt($this->ch,CURLOPT_HTTPHEADER,array('X-FORWARDED-FOR:'.$this->ip.'','CLIENT-IP:'.$this->ip.'')); 
        //伪造百度蜘蛛头部
        curl_setopt($this->ch,CURLOPT_USERAGENT,"Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
        curl_setopt($this->ch,CURLOPT_RETURNTRANSFER,1);
        curl_setopt($this->ch,CURLOPT_HEADER,0);
        curl_setopt($this->ch,CURLOPT_CONNECTTIMEOUT,$this->timeout);
        $content = curl_exec($this->ch);
        if($content === false)
        {//输出错误信息
            $no = curl_errno($this->ch);
            switch(trim($no))
            {
                case 28 : $this->error = '访问目标地址超时'; break;
                default : $this->error = curl_error($this->ch); break;
            }
            echo $this->error;
        }
        else
        {
            $this->succ = true;
            return $content;
        }
    }


评论

  1. 呵呵
    呵呵

    兄弟你自己仔细测试过了嘛还是拿别人的,你去抓个大众点评试试

    回复
    1. yusure
      yusure

      大众点评的当时是可以,就是用这段代码抓取的,现在已经不再那家公司了,不知道能不能用了。

      回复