第三天
小王(運營總監)看到小丁丁整天都在淘寶、百度、魔方、拍拍上面淘關鍵詞,每天花費的時間好長,工作效率又低,拿著這個借口來找到我。
說到:小帥帥,你看小丁丁每天都在淘寶、百度、魔方、拍拍上面淘關鍵詞花費的時間好長,你能不能幫幫忙,看看能不能讓系統自己做啦,這樣可以節省好多人力,帶來的效益多高。(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($this->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; } }
小帥帥心裡十分不樂意,心裡恨不得要揍揍於老大,但又不得不屈服他的淫威之下,只得答應說到:好的,我先回去琢磨琢磨一下。
小帥帥 從此郁悶了一天。 拿著天書式的武林秘籍去修煉去了。
現在 百度推廣有精確、短語、廣泛三種匹配方式,,一般來說黃金組合匹配方式是:廣泛匹配+搜索詞報告+否定關鍵詞。流量來說的話就是 廣泛>短語>精確啦,可以根據你們呢的實際情況進行設置!
如果要精確匹配,需要ABC都帶引號。