手把手教你做关键词匹配项目(搜索引擎)---- 第三天,教你做----
第三天
小王(运营总监)看到小丁丁整天都在淘宝、百度、魔方、拍拍上面淘关键词,每天花费的时间好长,工作效率又低,拿着这个借口来找到我。
说到:小帅帅,你看小丁丁每天都在淘宝、百度、魔方、拍拍上面淘关键词花费的时间好长,你能不能帮帮忙,看看能不能让系统自己做啦,这样可以节省好多人力,带来的效益多高。(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
小帅帅查看玩手册后,随手写了一份:
<span>#</span><span>请求淘宝首页</span> <span>$curl</span> =<span> curl_init(); curl_setopt_array(</span><span>$curl</span>,<span>array</span><span>( CURLOPT_FAILONERROR </span>=> <span>false</span>,<span> CURLOPT_RETURNTRANSFER </span>=> <span>true</span>,<span> CURLOPT_FOLLOWLOCATION </span>=> 1,<span> CURLOPT_CONNECTTIMEOUT </span>=> 15,<span> CURLOPT_TIMEOUT </span>=> 60, <span>//</span><span>CURLOPT_COOKIESESSION => 1, </span> CURLOPT_URL => "http://www.taobao.com"<span> )); </span><span>$result</span> = curl_exec(<span>$this</span>-><span>curl); </span><span>echo</span> <span>$result</span>;
小帅帅非常高兴,因为学到了新的知识。小帅帅又犯愁了,内容是取到了,怎么取里面的关键词?
小帅帅又屁颠屁颠的跑到小于(技术总监),去请教。
说道:于老大,curl我已经弄懂了,我取道淘宝的首页了,下面怎么办?
于老大瞄了一眼代码,很不乐意的说道:恩,写是写好了,怎么看着这么别扭。
小帅帅心里就不乐意了,想到我写的明明这么好,又简单使用,怎么别扭了。
于老大就把以前的代码翻出来,随手扔给小帅帅,说到:你先去看懂这份代码,用这份代码重新写一份?
文件内容:
<span>/*</span><span>* * cURL 常用操作封装 * * @author oShine </span><span>*/</span> <span>class</span><span> ExtendedCurl { </span><span>/*</span><span>* * 返回 JSON 内容为对象 </span><span>*/</span> <span>const</span> JSON_OBJECT = 0<span>; </span><span>/*</span><span>* * 返回 JSON 内容为数组 </span><span>*/</span> <span>const</span> JSON_ARRAY = 1<span>; </span><span>/*</span><span>* * cURL Handle * * @var resource </span><span>*/</span> <span>private</span> <span>$curl</span><span>; </span><span>/*</span><span>* * 当前(默认) cURL 参数 * * @var array </span><span>*/</span> <span>private</span> <span>$options</span> = <span>array</span><span>( CURLOPT_FAILONERROR </span>=> <span>false</span>,<span> CURLOPT_RETURNTRANSFER </span>=> <span>true</span>,<span> CURLOPT_FOLLOWLOCATION </span>=> 1,<span> CURLOPT_CONNECTTIMEOUT </span>=> 15,<span> CURLOPT_TIMEOUT </span>=> 60, <span>//</span><span>CURLOPT_COOKIESESSION => 1, </span> <span> ); </span><span>/*</span><span>* * 最后一次请求的错误信息 * * @var null|string </span><span>*/</span> <span>private</span> <span>$error</span> = <span>null</span><span>; </span><span>/*</span><span>* * @var int </span><span>*/</span> <span>private</span> <span>$httpCode</span> = <span>null</span><span>; </span><span>/*</span><span>* * @param array $defaultOptions * @internal param array $options 可选的覆盖默认 cURL 参数 </span><span>*/</span> <span>public</span> <span>function</span> __construct(<span>array</span> <span>$defaultOptions</span> = <span>array</span><span>()) { </span><span>$this</span>->curl =<span> curl_init(); </span><span>if</span> (!<span>empty</span>(<span>$defaultOptions</span><span>)) { </span><span>$this</span>->options = <span>$defaultOptions</span><span>; } } </span><span>/*</span><span>* * 设置 cURL 多个选项 * * @param array $options </span><span>*/</span> <span>public</span> <span>function</span> setOptions(<span>array</span> <span>$options</span><span>) { </span><span>foreach</span> (<span>$options</span> <span>as</span> <span>$key</span> => <span>$value</span><span>) { </span><span>$this</span>->setOption(<span>$key</span>, <span>$value</span><span>); } } </span><span>/*</span><span>* * 设置 cURL 单个选项 * * @param $key * @param $value </span><span>*/</span> <span>public</span> <span>function</span> setOption(<span>$key</span>, <span>$value</span><span>) { </span><span>$this</span>->options[<span>$key</span>] = <span>$value</span><span>; } </span><span>/*</span><span>* * 发送 GET 请求并返回解析后的 JSON 内容 * * @param $url * @param array $data * @param int $type * @return null|object|array </span><span>*/</span> <span>public</span> <span>function</span> getJson(<span>$url</span>, <span>array</span> <span>$data</span> = <span>array</span>(), <span>$type</span> = self::<span>JSON_ARRAY) { </span><span>$content</span> = <span>$this</span>->get(<span>$url</span>, <span>$data</span><span>); </span><span>return</span> json_decode(<span>$content</span>, <span>$type</span><span>); } </span><span>/*</span><span>* * 发送 GET 请求 * * @param $url * @param array $data * @return null|string </span><span>*/</span> <span>public</span> <span>function</span> get(<span>$url</span>, <span>array</span> <span>$data</span> = <span>array</span><span>()) { </span><span>if</span> (!<span>empty</span>(<span>$data</span><span>)) { </span><span>if</span> (<span>false</span> === <span>strpos</span>(<span>$url</span>, '?'<span>)) { </span><span>$url</span> .= '?'<span>; } </span><span>else</span><span> { </span><span>$url</span> .= '&'<span>; } </span><span>$url</span> .= <span>http_build_query</span>(<span>$data</span><span>); } </span><span>$options</span> = <span>array</span><span>( CURLOPT_URL </span>=> <span>$url</span>,<span> ); </span><span>return</span> <span>$this</span>->request(<span>$options</span><span>); } </span><span>/*</span><span>* * 发送 cURL 请求 * * @param array $options * @return mixed </span><span>*/</span> <span>private</span> <span>function</span> request(<span>array</span> <span>$options</span> = <span>array</span><span>()) { </span><span>$this</span>->setOptions(<span>$options</span><span>); curl_setopt_array(</span><span>$this</span>->curl, <span>$this</span>-><span>options); </span><span>$result</span> = curl_exec(<span>$this</span>-><span>curl); </span><span>$errorNo</span> = curl_errno(<span>$this</span>-><span>curl); </span><span>$response</span> = curl_getinfo( <span>$this</span>-><span>curl ); </span><span>if</span> (<span>$errorNo</span><span>) { </span><span>$this</span>->error = '[' . <span>$errorNo</span> . '] ' . curl_error(<span>$this</span>-><span>curl); } </span><span>else</span><span> { </span><span>$this</span>->error = <span>null</span><span>; } </span><span>if</span>(<span>isset</span>(<span>$response</span>['http_code'<span>])){ </span><span>$this</span>->httpCode = <span>$response</span>['http_code'<span>]; } </span><span>return</span> <span>$result</span><span>; } </span><span>/*</span><span>* * 发送 POST 请求并返回解析后的 JSON 内容 * * @param $url * @param array $data * @param int $type * @return null|object|array </span><span>*/</span> <span>public</span> <span>function</span> postJson(<span>$url</span>, <span>array</span> <span>$data</span> = <span>array</span>(), <span>$return</span> = self::<span>JSON_ARRAY) { </span><span>$content</span> = <span>$this</span>->post(<span>$url</span>, <span>$data</span><span>); </span><span>return</span> json_decode(<span>$content</span>, <span>$return</span><span>); } </span><span>/*</span><span>* * 发送 POST 请求 * * @param $url * @param array $data * @return null|string </span><span>*/</span> <span>public</span> <span>function</span> post(<span>$url</span>, <span>array</span> <span>$data</span> = <span>array</span><span>()) { </span><span>$options</span> = <span>array</span><span>( CURLOPT_URL </span>=> <span>$url</span>,<span> CURLOPT_POST </span>=> 1,<span> ); </span><span>if</span> (!<span>empty</span>(<span>$data</span><span>)) { </span><span>if</span> (<span>$this</span>->isMultiPart(<span>$data</span><span>)) { </span><span>$options</span>[CURLOPT_POSTFIELDS] = <span>$data</span><span>; } </span><span>else</span><span> { </span><span>$options</span>[CURLOPT_POSTFIELDS] = <span>http_build_query</span>(<span>$data</span><span>); } } </span><span>return</span> <span>$this</span>->request(<span>$options</span><span>); } </span><span>private</span> <span>function</span> isMultiPart(<span>$data</span><span>) { </span><span>foreach</span> (<span>$data</span> <span>as</span> <span>$value</span><span>) { </span><span>if</span> ('@' == <span>$value</span>[0<span>]) </span><span>return</span> <span>true</span><span>; } </span><span>return</span> <span>false</span><span>; } </span><span>/*</span><span>* * 判断最后一次请求是否有错误 * * @return bool </span><span>*/</span> <span>public</span> <span>function</span><span> hasError() { </span><span>return</span> <span>null</span> !== <span>$this</span>-><span>error; } </span><span>/*</span><span>* * 获取最后一次请求的错误信息 * * @return null|string </span><span>*/</span> <span>public</span> <span>function</span><span> getError() { </span><span>return</span> <span>$this</span>-><span>error; } </span><span>public</span> <span>function</span><span> getHttpCode() { </span><span>return</span> <span>$this</span>-><span>httpCode; } } </span>
小帅帅心里十分不乐意,心里恨不得要揍揍于老大,但又不得不屈服他的淫威之下,只得答应说到:好的,我先回去琢磨琢磨一下。
小帅帅 从此郁闷了一天。 拿着天书式的武林秘籍去修炼去了。
现在 百度推广有精确、短语、广泛三种匹配方式,,一般来说黄金组合匹配方式是:广泛匹配+搜索词报告+否定关键词。流量来说的话就是 广泛>短语>精确啦,可以根据你们呢的实际情况进行设置!
如果要精确匹配,需要ABC都带引号。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

드림위버 CS6
시각적 웹 개발 도구
