一个网页抓取的类支持get+post+cookie存储

前段时间提取了一个工具类,分享给大家:

<?php
class httpconnector {
    private $curl;
    private $cookie;
    private $kv;
    function __construct(){
        $this->kv = new SaeKV();
        $this->kv->init();
        if($data=$this->kv->get("cookie"))
          $this->cookie=$data;
 
    }
    public function get($url) {
        $this->curl = curl_init();
        curl_setopt($this->curl, CURLOPT_URL, $url);
        curl_setopt($this->curl, CURLOPT_HEADER, 1);
        curl_setopt($this->curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
        curl_setopt($this->curl, CURLOPT_COOKIE, $this->cookie);
        curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, 1);
        $data = curl_exec($this->curl);
        curl_close($this->curl);
        preg_match_all("/Set-Cookie:(.*?);/", $data, $match, PREG_SET_ORDER);
        foreach ($match as $r) {
            if ($this->cookie != '') {
                $this->cookie = $this->cookie . ';';
            }
            if (isset($r[1])) {
                $this->cookie .= trim(str_replace("\r\n", "", $r[1]));
            }
        }
        $this->kv->set("cookie",$this->cookie);
        return $data;
 
    }
    public function post($url, $params) {
        $this->curl = curl_init();
        curl_setopt($this->curl, CURLOPT_URL, $url);
        curl_setopt($this->curl, CURLOPT_HEADER, 1);
        curl_setopt($this->curl, CURLOPT_COOKIE, $this->cookie);
        curl_setopt($this->curl, CURLOPT_POST, 1);
        curl_setopt($this->curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
        curl_setopt($this->curl, CURLOPT_POSTFIELDS, $params);
        curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, 1);
        $data = curl_exec($this->curl);
        curl_close($this->curl);
        preg_match_all("/Set-Cookie:(.*?);/", $data, $match, PREG_SET_ORDER);
        foreach ($match as $r) {
            if ($this->cookie != '') {
                $this->cookie = $this->cookie . ';';
            }
            if (isset($r[1])) {
                $this->cookie .= trim(str_replace("\r\n", "", $r[1]));
            }
        }
        $this->kv->set("cookie",$this->cookie);
        return $data;
 
    }
}
?>

 

 

posted @ 2013-10-18 14:16  小孟文摘  阅读(327)  评论(0)    收藏  举报