当前位置: 首页 > news >正文

PHP与SEO,应用curl库获取百度下拉关键词案例!

编程语言从来都是工具,编程逻辑思维才是最重要的,在限定的规则内,实现自己的想法,正如人生一样!

不管是python还是php只要掌握了基础语法规则,明确了实现过程,都能达到想要实现的结果,不同的是有人接受能力强,变通厉害,反之,如本渣渣愚笨,不懂变动之人,一直在打转转。

希望更多学习编程语言的人早日走出新手村!

以下php实现百度下拉词的获取的简单案例,参考本渣渣以前写的Python获取百度下拉词,SEO工具脚本,Python百度下拉框关键词采集工具,结合度娘搜索参考,以php语言来实现同样的效果,还是那句话,编程是工具,最重要的还是编程的个人,与使用何种语言无关。

其实最早以前有写过一篇php的seo应用,PHP与SEO,应用curl及正则获取搜狗搜索相关关键词,本篇也是在该篇的基础上,应用同样的curl库来实现。

a0edf7a8a2d697925e08ed453d820771.png

最初写的那篇php应用参考资料比较详细,如有意可移步查阅。

php相比python,本渣渣实践的太少,老是不习惯,没有写顺手,还是写的太少了!

4cf323cf31f5950b39e1ec3470075084.png

以下简单分享几个关键点:

1.字符串编码转换 json_decode 函数

$keywords=json_decode($response, true); // 对JSON字符串「解码」,并转换为PHP变量。

2.字符串切片分段 explode函数

$slice = explode(".sug(", $encodedString);

3.功能强大的 php 扩展库 curl

$bd=curl_init();
curl_setopt($bd, CURLOPT_SSL_VERIFYPEER, false); // 信任任何证书
curl_setopt($bd,CURLOPT_URL, $url);
curl_setopt($bd, CURLOPT_RETURNTRANSFER, 1); //不直接输出页面内容
$response=curl_exec($bd);
curl_close($bd);

4.php 数组的打印输出

foreach($keywords as $keword){echo $keword['q'].'<br>';
}

5.php 类方法的生成调用

$bd= new Bd();
// 版本一
$bd->bdxl();
echo '<hr>';
// 版本二
$bd->bdxl2();
echo '<hr>';
// 版本三
$bd->bdxl3();

6.字符串乱码 转换gbk编码 mb_convert_encoding 函数

$encodedString = mb_convert_encoding($originalString, 'UTF-8', 'GBK'); //转换成gbk编码

附源码参考:

<!-- https://www.php.net/curl-setopt -->
<!-- 公众号:Python与SEO学习 --><?php
class Bd
{public function bdxl()
{$key="php";$xlurl="https://www.baidu.com/sugrec?pre=1&ie=utf-8&json=1&prod=pc&wd=";$url=$xlurl.$key;$bd=curl_init();//curl_setopt($bd, CURLOPT_RETURNTRANSFER, true);$user_agent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36";curl_setopt($bd, CURLOPT_USERAGENT,$user_agent);curl_setopt($bd, CURLOPT_SSL_VERIFYPEER, false); // 信任任何证书curl_setopt($bd,CURLOPT_URL, $url);curl_setopt($bd, CURLOPT_RETURNTRANSFER, 1); //不直接输出页面内容$response=curl_exec($bd);curl_close($bd);// echo $response;// var_dump($response);$keywords=json_decode($response, true); // 对JSON字符串「解码」,并转换为PHP变量。// var_dump($keywords);$keywords=$keywords["g"];// var_dump($keywords);foreach($keywords as $keword){echo $keword['q'].'<br>';}}public function bdxl2(){$key="php";$xlurl="https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=";$url=$xlurl.$key;$bd=curl_init();curl_setopt($bd, CURLOPT_SSL_VERIFYPEER, false); // 信任任何证书curl_setopt($bd,CURLOPT_URL, $url);curl_setopt($bd, CURLOPT_RETURNTRANSFER, 1); //不直接输出页面内容$response=curl_exec($bd);curl_close($bd);// echo $response;// var_dump($response);// print_r($response);$originalString = $response;$encodedString = mb_convert_encoding($originalString, 'UTF-8', 'GBK'); //转换成gbk编码// var_dump($encodedString);// 切片,以'false,s:['作为分隔符$slice = explode("false,s:[", $encodedString);// var_dump($slice[1]);// 切片,以']'作为分隔符$slice = explode("]", $slice[1]);// var_dump($slice[0]); // 切片,以','作为分隔符$slice = explode(",", $slice[0]);// var_dump($slice); // print_r($slice[0]);foreach($slice as $keyword){echo $keyword.'<br>';}echo '<hr>';$slice = explode(".sug(", $encodedString);// var_dump($slice[1]);$slice = explode(")", $slice[1]);var_dump($slice[0]);}public function bdxl3(){$key="php";$url='http://suggestion.baidu.com/su?wd='.$key.'&sugmode=3&json=1';$bd=curl_init();curl_setopt($bd, CURLOPT_SSL_VERIFYPEER, false); // 信任任何证书curl_setopt($bd,CURLOPT_URL, $url);curl_setopt($bd, CURLOPT_RETURNTRANSFER, 1); //不直接输出页面内容$response=curl_exec($bd);curl_close($bd);// var_dump($response);$originalString = $response;$encodedString = mb_convert_encoding($originalString, 'UTF-8', 'GBK'); //转换成gbk编码// var_dump($encodedString);$slice = explode(".sug(", $encodedString);$slice = explode(")", $slice[1]);// var_dump($slice[0]);$keywords=json_decode($slice[0], true); // 对JSON字符串「解码」,并转换为PHP变量。// var_dump($keywords);$keywords=$keywords["g"];// var_dump($keywords);foreach($keywords as $keword){echo $keword['q'].'<br>';}}
}$bd= new Bd();
// 版本一
$bd->bdxl();
echo '<hr>';
// 版本二
$bd->bdxl2();
echo '<hr>';
// 版本三
$bd->bdxl3();

当然版本二获取的输出打印还是存在问题,这里仅供参考,就不搞了,其实是搞了很久没搞出来...

·················END·················

你好,我是二大爷,

革命老区外出进城务工人员,

互联网非早期非专业站长,

喜好python,写作,阅读,英语

不入流程序,自媒体,seo . . .

公众号不挣钱,交个网友。

读者交流群已建立,找到我备注 “交流”,即可获得加入我们~

听说点 “在看” 的都变得更好看呐~

关注关注二大爷呗~给你分享python,写作,阅读的内容噢~

扫一扫下方二维码即可关注我噢~

a41285a9bfa1eb275d02ac44d5a88368.jpeg

d782889ac5e22dc6df9f08a46527c09a.png

关注我的都变秃了

说错了,都变强了!

不信你试试

54ba28c64e84d746523ae91e2a0b3a42.jpeg

扫码关注最新动态

公众号ID:eryeji

相关文章:

PHP与SEO,应用curl库获取百度下拉关键词案例!

编程语言从来都是工具&#xff0c;编程逻辑思维才是最重要的&#xff0c;在限定的规则内&#xff0c;实现自己的想法&#xff0c;正如人生一样&#xff01; 不管是python还是php只要掌握了基础语法规则&#xff0c;明确了实现过程&#xff0c;都能达到想要实现的结果&#xff0…...

MySQL:子查询

MySQL 子查询 MySQL中的子查询是一个强大的功能&#xff0c;子查询是指在一个查询语句中嵌套另一个查询语句的情况。嵌套查询中的内部查询语句可以使用外部查询语句的结果来进行过滤、联接或作为子查询的值&#xff0c;它允许我们在一个查询内部嵌套另一个查询。通过子查询可以…...

C++—— IO流

一、C语言的输入与输出 C语言中我们用到的最频繁的输入输出方式就是scanf()和printf()。 scanf()&#xff1a;从标准输入设备&#xff08;键盘&#xff09;中读取数据&#xff0c;并将值存放在变量中。 printf()&#xff1a;将指定的文字/字符串输出到标准输出设备&#xff08;…...

vue+node后台处理大文件切片上传--前端部分

本文主要介绍&#xff0c;在vue3vite项目下&#xff0c;如何进行有效的大文件上传&#xff0c;本文章主要讲大文件切片上传方式&#xff0c;并提供简单的demo代码供参考 首先&#xff0c;请确保已经创建好项目&#xff0c;这一步跳过。 1、为了选择合适的文件&#xff0c;我们…...

【通俗理解】艺术与数学交融

【通俗理解】艺术与数学交融 艺术与数学的奇妙交融 你可以把艺术比作一个“梦幻花园”&#xff0c;它充满了无限的可能性和美感。而数学则是一把“精密钥匙”&#xff0c;它能够解开花园中的秘密&#xff0c;揭示美的内在结构。 艺术与数学交融的核心作用 组件/步骤描述艺术表…...

深入探讨 Docker 容器文件系统

引言 随着云计算和微服务架构的兴起&#xff0c;Docker 容器技术迅速成为开发和运维人员的首选工具。Docker 容器不仅提供了一种轻量级的虚拟化方式&#xff0c;还简化了应用程序的部署和管理。在众多的技术细节中&#xff0c;Docker 容器文件系统是一个至关重要的组成部分。本…...

《LeetCode热题100》---<4.子串篇三道>

本篇博客讲解LeetCode热题100道子串篇中的三道题 第一道&#xff1a;和为 K 的子数组 第二道&#xff1a;滑动窗口最大值 第三道&#xff1a;最小覆盖子串 第一道&#xff1a;和为 K 的子数组&#xff08;中等&#xff09; 法一&#xff1a;暴力枚举 class Solution {public in…...

全国区块链职业技能大赛样题第9套前端源码

后端源码地址:https://blog.csdn.net/Qhx20040819/article/details/140746050 前端源码地址:https://blog.csdn.net/Qhx20040819/article/details/140746216 智能合约+数据库表设计:https://blog.csdn.net/Qhx20040819/article/details/140746646 登录 ​ 用户管理...

如何提高编程面试成功率:LeetCode Top 100 问题及解答解析(详细面试宝典)

以下是 LeetCode Top 100 面试必备题目及其解决方案示例。这些题目涵盖了数据结构、算法、动态规划、回溯等多种重要的面试话题。希望各位同学有所收货&#xff0c;早日脱离底层到达彼岸&#xff01; 1. Two Sum 题目: 给定一个整数数组 nums 和一个目标值 target&#xff0c…...

K-近邻和神经网络

K-近邻&#xff08;K-NN, K-Nearest Neighbors&#xff09; 原理 K-近邻&#xff08;K-NN&#xff09;是一种非参数分类和回归算法。K-NN 的主要思想是根据距离度量&#xff08;如欧氏距离&#xff09;找到训练数据集中与待预测样本最近的 K 个样本&#xff0c;并根据这 K 个…...

用EasyV全景图低成本重现真实场景,360°感受数字孪生

全景图&#xff0c;即借助绘画、相片、视频、三维模型等形式&#xff0c;通过广角的表现手段&#xff0c;尽可能多表现出周围的环境。避免了一般平面效果图视角单一&#xff0c;不能带来全方位视角的缺陷&#xff0c;能够全方位的展示360度球型范围内的所有景致&#xff0c;最大…...

【Golang 面试 - 进阶题】每日 3 题(九)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…...

孟德尔随机化、R语言,报错,如何解决?

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…...

一文剖析高可用向量数据库的本质

面对因电力故障、网络问题或人为操作失误等导致的服务中断&#xff0c;数据库系统高可用能够保证系统在这些情况下仍然不间断地提供服务。如果数据库系统不具备高可用性&#xff0c;那么系统就需要承担停机和数据丢失等重大风险&#xff0c;而这些风险极有可能造成用户流失&…...

JavaScript青少年简明教程:异常处理

JavaScript青少年简明教程&#xff1a;异常处理 在 JavaScript 中&#xff0c;异常指的是程序执行过程中出现的错误或异常情况。这些错误可能导致程序无法正常执行&#xff0c;甚至崩溃。ECMA-262规范了多种JavaScript错误类型&#xff0c;这些类型都继承自Error基类。主要的错…...

科普文:Lombok使用及工作原理详解

1. 概叙 Lombok是什么&#xff1f; Project Lombok 是一个 JAVA 库&#xff0c;它可以自动插入编辑器和构建工具&#xff0c;为您的 JAVA 锦上添花。再也不要写另一个 getter/setter 或 equals 等方法&#xff0c;只要有一个注注解&#xff0c;你的类就有一个功能齐全的生成器…...

飞致云开源社区月度动态报告(2024年7月)

自2023年6月起&#xff0c;中国领先的开源软件公司FIT2CLOUD飞致云以月度为单位发布《飞致云开源社区月度动态报告》&#xff0c;旨在向广大社区用户同步飞致云旗下系列开源软件的发展情况&#xff0c;以及当月主要的产品新版本发布、社区运营成果等相关信息。 飞致云开源大屏…...

mybatis-plus——实现动态字段排序,根据实体获取字段映射数据库的具体字段

前言 前端需要根据表头的点击控件可以排序&#xff0c;虽然前端能根据当前页的数据进行对应字段的排序&#xff0c;但也仅局限于实现当前页的排序&#xff0c;无法满足全部数据的排序&#xff0c;所以需要走接口的查询进行排序&#xff0c;获取最全的排序数据 实现方案 前端…...

redis:Linux安装redis,redis常用的数据类型及相关命令

1. 什么是NoSQL nosql[not only sql]不仅仅是sql。所有非关系型数据库的统称。除去关系型数据库之外的都是非关系数据库。 1.1为什么使用NoSQL ​ NoSQL数据库相较于传统关系型数据库具有灵活性、可扩展性和高性能等优势&#xff0c;适合处理非结构化和半结构化数据&#xff0c…...

JavaScript 和 HTML5 Canvas实现图像绘制与处理

前言 JavaScript 和 HTML5 的 canvas 元素提供了强大的图形和图像处理功能&#xff0c;使得开发者能够在网页上创建动态和交互式的视觉体验。这里我们将探讨如何使用 canvas 和 JavaScript 来处理图像加载&#xff0c;并在其上进行图像绘制。我们将实现一个简单的示例&#xf…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...