• 手把手教你做关键词匹配项目(搜索引擎) 第三天


    第三天

    小王(运营总监)看到小丁丁整天都在淘宝、百度、魔方、拍拍上面淘关键词,每天花费的时间好长,工作效率又低,拿着这个借口来找到我。

    说到:小帅帅,你看小丁丁每天都在淘宝、百度、魔方、拍拍上面淘关键词花费的时间好长,你能不能帮帮忙,看看能不能让系统自己做啦,这样可以节省好多人力,带来的效益多高。(0 其实就是为了掩饰他们懒惰 0)

    小帅帅一听到可以带来的效益好高,王总还求着我呢 ,马上 两眼冒着星光,是该好好体现, 解决这个问题就可以体现出我的价值。

    小帅帅拍着胸膛保证到:王总,这个小KS啦,马上帮你办到。 ( 0 程序员就是这么可爱,乐于挑战,乐于接受,从不需要高额的回报 0 )

    小王拍了拍小帅帅: 好小伙子,好好加油,等你的好消息。

    小帅帅从此乐呵了一整天。从没去想想这是多么蛋疼的一项任务。

    关键词来源示例图:

    当小帅帅醒过来时,才意识到原来这个项目不是一般的蛋疼啊。

    小帅帅不知道如何下手,就屁颠屁颠的跑到小于(技术总监)旁边(0 有技术总监真好,强大的靠山,反正有人背黑锅 0)。

    说到:于老大,刚才王总给了这个任务给我,我不晓得怎么办好,能否高抬贵嘴,指导下。

    于老大瞄了一眼,说到:你是用php做的吧,php做就复杂点咯,知道curl、html dom解析吗?

    小帅帅,说到:不太懂耶,没用过,看起来好高深的样子。

    于老大鄙视了一番:这有什么高深的,很简单的,百度一下咯。(老大就是老大,什么事情在他眼里都是简单的,好崇拜的对象)

    于老大在baidu搜索框里面输入 php curl,查出了结果让小帅帅去了解。

    php curl手册: http://cn2.php.net/manual/zh/book.curl.php

    小帅帅查看玩手册后,随手写了一份:

    #请求淘宝首页
    
    $curl = curl_init();
    curl_setopt_array($curl,array(
            CURLOPT_FAILONERROR => false,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_FOLLOWLOCATION => 1,
            CURLOPT_CONNECTTIMEOUT => 15,
            CURLOPT_TIMEOUT => 60,
            //CURLOPT_COOKIESESSION => 1,  
            CURLOPT_URL => "http://www.taobao.com"
    ));
    
    $result = curl_exec($curl);
    echo $result;

    小帅帅非常高兴,因为学到了新的知识。小帅帅又犯愁了,内容是取到了,怎么取里面的关键词?

    小帅帅又屁颠屁颠的跑到小于(技术总监),去请教。

    说道:于老大,curl我已经弄懂了,我取道淘宝的首页了,下面怎么办?

    于老大瞄了一眼代码,很不乐意的说道:恩,写是写好了,怎么看着这么别扭。

    小帅帅心里就不乐意了,想到我写的明明这么好,又简单使用,怎么别扭了。

    于老大就把以前的代码翻出来,随手扔给小帅帅,说到:你先去看懂这份代码,用这份代码重新写一份?

    文件内容:

    /**
     * cURL 常用操作封装
     *
     * @author oShine
     */
    class ExtendedCurl
    {
        /**
         * 返回 JSON 内容为对象
         */
        const JSON_OBJECT = 0;
    
        /**
         * 返回 JSON 内容为数组
         */
        const JSON_ARRAY = 1;
    
        /**
         * cURL Handle
         *
         * @var resource
         */
        private $curl;
    
        /**
         * 当前(默认) cURL 参数
         *
         * @var array
         */
        private $options = array(
            CURLOPT_FAILONERROR => false,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_FOLLOWLOCATION => 1,
            CURLOPT_CONNECTTIMEOUT => 15,
            CURLOPT_TIMEOUT => 60,
            //CURLOPT_COOKIESESSION => 1,        
        );
    
        /**
         * 最后一次请求的错误信息
         *
         * @var null|string
         */
        private $error = null;
    
        /**
         * @var int
         */
        private $httpCode = null;
    
        /**
         * @param array $defaultOptions
         * @internal param array $options 可选的覆盖默认 cURL 参数
         */
        public function __construct(array $defaultOptions = array())
        {
            $this->curl = curl_init();
            if (!empty($defaultOptions)) {
                $this->options = $defaultOptions;
            }
        }
    
        /**
         * 设置 cURL 多个选项
         *
         * @param array $options
         */
        public function setOptions(array $options)
        {
            foreach ($options as $key => $value) {
                $this->setOption($key, $value);
            }
        }
    
        /**
         * 设置 cURL 单个选项
         *
         * @param $key
         * @param $value
         */
        public function setOption($key, $value)
        {
            $this->options[$key] = $value;
        }
    
        /**
         * 发送 GET 请求并返回解析后的 JSON 内容
         *
         * @param $url
         * @param array $data
         * @param int $type
         * @return null|object|array
         */
        public function getJson($url, array $data = array(), $type = self::JSON_ARRAY)
        {
            $content = $this->get($url, $data);
            return json_decode($content, $type);
        }
    
        /**
         * 发送 GET 请求
         *
         * @param $url
         * @param array $data
         * @return null|string
         */
        public function get($url, array $data = array())
        {
            if (!empty($data)) {
                if (false === strpos($url, '?')) {
                    $url .= '?';
                } else {
                    $url .= '&';
                }
                $url .= http_build_query($data);
            }
            $options = array(
                CURLOPT_URL => $url,
            );
            return $this->request($options);
        }
    
        /**
         * 发送 cURL 请求
         *
         * @param array $options
         * @return mixed
         */
        private function request(array $options = array())
        {
            $this->setOptions($options);
            curl_setopt_array($this->curl, $this->options);
            $result = curl_exec($this->curl);
            $errorNo = curl_errno($this->curl);
            $response = curl_getinfo( $this->curl );
            if ($errorNo) {
                $this->error = '[' . $errorNo . '] ' . curl_error($this->curl);
            } else {
                $this->error = null;
            }
            if(isset($response['http_code'])){
                $this->httpCode = $response['http_code'];
            }
    
            return $result;
        }
    
        /**
         * 发送 POST 请求并返回解析后的 JSON 内容
         *
         * @param $url
         * @param array $data
         * @param int $type
         * @return null|object|array
         */
        public function postJson($url, array $data = array(), $return = self::JSON_ARRAY)
        {
            $content = $this->post($url, $data);
            return json_decode($content, $return);
        }
    
        /**
         * 发送 POST 请求
         *
         * @param $url
         * @param array $data
         * @return null|string
         */
        public function post($url, array $data = array())
        {
            $options = array(
                CURLOPT_URL => $url,
                CURLOPT_POST => 1,
            );
            if (!empty($data)) {
                if ($this->isMultiPart($data)) {
                    $options[CURLOPT_POSTFIELDS] = $data;
                } else {
                    $options[CURLOPT_POSTFIELDS] = http_build_query($data);
                }
            }
            return $this->request($options);
        }
    
        private function isMultiPart($data)
        {
            foreach ($data as $value) {
                if ('@' == $value[0])
                    return true;
            }
            return false;
        }
    
        /**
         * 判断最后一次请求是否有错误
         *
         * @return bool
         */
        public function hasError()
        {
            return null !== $this->error;
        }
    
        /**
         * 获取最后一次请求的错误信息
         *
         * @return null|string
         */
        public function getError()
        {
            return $this->error;
        }
    
        public function getHttpCode()
        {
            return $this->httpCode;
        }
    } 

    小帅帅心里十分不乐意,心里恨不得要揍揍于老大,但又不得不屈服他的淫威之下,只得答应说到:好的,我先回去琢磨琢磨一下。

    小帅帅 从此郁闷了一天。 拿着天书式的武林秘籍去修炼去了。

    作者: oShine.Q
    出处:http://www.cnblogs.com/oshine/
    作品oShine.Q 创作, 欢迎转载,但任何转载必须保留完整文章,在显要地方显示署名以及原文链接。如您有任何疑问,请给我留言。
  • 相关阅读:
    20220424 Java核心技术 卷1 基础知识 7
    20220424 Java核心技术 卷1 基础知识 45
    20220424 Java核心技术 卷1 基础知识 14
    20220424 Java核心技术 卷1 基础知识 9
    20220424 Java核心技术 卷1 基础知识 8
    20220424 Java核心技术 卷1 基础知识 13
    15、集合框架_ArrayList
    12接口
    18、集合框架_HashMap\TreeMap
    16、集合框架_LinkedList\Vertor
  • 原文地址:https://www.cnblogs.com/oshine/p/3895998.html
Copyright © 2020-2023  润新知