zoukankan      html  css  js  c++  java
  • 一个网页抓取的类支持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[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[1]));
                }
            }
            $this->kv->set("cookie",$this->cookie);
            return $data;
     
        }
    }
    ?>
    
     
    
  • 相关阅读:
    剑指 Offer 26. 树的子结构
    99. 恢复二叉搜索树(困难)
    93. 复原IP地址
    剑指 Offer 20. 表示数值的字符串
    100. 相同的树
    336. 回文对
    12. 整数转罗马数字(贪心!)
    块链技术在数据中心应用的成与败
    新型大脑启发式学习方法来了,可帮助人工神经网络节省内存和能量
    混合多云为何具有技术优势
  • 原文地址:https://www.cnblogs.com/mengdejun/p/3375991.html
Copyright © 2011-2022 走看看