当前位置: 首页 > 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…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

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

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

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为&#xff1a;一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...

毫米波雷达基础理论(3D+4D)

3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文&#xff1a; 一文入门汽车毫米波雷达基本原理 &#xff1a;https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...