0

0

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

php中文网

php中文网

发布时间:2016-07-13 10:21:15

|

1053人浏览过

|

来源于php中文网

原创

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

第三天

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

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

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

立即学习PHP免费学习笔记(深入)”;

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

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

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

关键词来源示例图:

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

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

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

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

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

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

Musho
Musho

AI网页设计Figma插件

下载

于老大在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都带引号。
 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/860058.htmlTechArticle手把手教你做关键词匹配项目(搜索引擎)---- 第三天,教你做---- 第三天 小王(运营总监)看到小丁丁整天都在淘宝、百度、魔方、拍拍...

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

705

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

233

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

117

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

22

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

61

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

30

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

15

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

669

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

58

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CSS梅兰商城网页设计项目视频教程
CSS梅兰商城网页设计项目视频教程

共18课时 | 5.4万人学习

三天学会PHP爬虫视频教程
三天学会PHP爬虫视频教程

共3课时 | 2.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号