第三天
小王(运营总监)看到小丁丁整天都在淘宝、百度、魔方、拍拍上面淘关键词,每天花费的时间好长,工作效率又低,拿着这个借口来找到我。
说到:小帅帅,你看小丁丁每天都在淘宝、百度、魔方、拍拍上面淘关键词花费的时间好长,你能不能帮帮忙,看看能不能让系统自己做啦,这样可以节省好多人力,带来的效益多高。(0 其实就是为了掩饰他们懒惰 0)
小帅帅一听到可以带来的效益好高,王总还求着我呢 ,马上 两眼冒着星光,是该好好体现, 解决这个问题就可以体现出我的价值。
小帅帅拍着胸膛保证到:王总,这个小KS啦,马上帮你办到。 ( 0 程序员就是这么可爱,乐于挑战,乐于接受,从不需要高额的回报 0 )
立即学习“PHP免费学习笔记(深入)”;
小王拍了拍小帅帅: 好小伙子,好好加油,等你的好消息。
小帅帅从此乐呵了一整天。从没去想想这是多么蛋疼的一项任务。
关键词来源示例图:


当小帅帅醒过来时,才意识到原来这个项目不是一般的蛋疼啊。
小帅帅不知道如何下手,就屁颠屁颠的跑到小于(技术总监)旁边(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都带引号。
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号