百度相关提示与搜索结果标题

作者: 吴星
发布时间:2014-04-15 20:30
浏览:11862

为了便于研究 F1 第 6 位,在网页工具上增加显示百度的相关搜索与下拉框提示词的代码,从而衍生出了一些新想法。因篇幅较长,所以从 F 1 第 6 位参数解释里单独拿出来作介绍。

相关搜索
相关搜索较易从百度搜索结果页得到
if
(preg_match_all("/(?<=&rs_src\=)([01]{1}\">)([\x80-\xff\w\s\.#\:\/]{0,32})(?=<\/a><\/th><)/", $baiduserp, $matchrelated))
for ($i = 0; $i <= count($matchrelated[1]) - 1; $i++)
{
    echo $matchrelated[2][$i];
}

[\x80-\xff\w\s.#\:\/]{0,32} 能匹配大部分百度相关搜索词

下拉框提示
下拉框提示词比较麻烦,不能直接从百度搜索结果页得到。
花了几个小时分析了百度搜索结果页的 JavaScript,看得眼花撩乱。
整理后找到了可以借用的一段代码。
"buildUrl": function(val, mode) {
    var me = this, requestUrl = me.sugHost || "http://suggestion.baidu.com/su", sugMode = mode ? "&sugmode=" + mode : "";
    return me.sugcookie > 0 && (me.sugcookie = 3), requestUrl + "?wd=" + encodeURIComponent(val) + sugMode + "&p=" + me.sugcookie + "&sid=" + me.sid;
},

下面这行 JS 说明了百度下拉框提示词是怎么建造的。
requestUrl + ?wd= + encodeURIComponent(val) + sugMode + "&p=" + me.sugcookie + "&sid=" + me.sid;


实际百度搜索结果页的下拉框提示
Request URL:http://suggestion.baidu.com/su?wd=seo&sugmode=2&zxmode=1&json=1&p=3&sid=5820_5229_1452_6053_5223_4759_6018_5856_5373_5919&cb=jQuery110209567506273742765_1397615281459&_=1397615281466


百度返回 200 状态码的页面
jQuery110209567506273742765_1397615281459({"q":"seo","p":false,"s":["seo是什么","seo优化","seo教程","seo查询","seo工具","seo是什么意思","seo公司","淘宝seo","seo博客","seo猪八戒网"],"zzx":["0","0","0","0","0","0","0","0","0","0"]});

其中 sugmode, zxmode 具体是什么意思尚不清楚,不过有几个固定值。
sugmode 有 [123]{1} 3 个值
zxmode 发现 [12]{1} 2 个值

现在暂时去掉不需要或无法利用的参数 sid, p, sugcookie, json, zxmode, cb, _ 再加上输入编码 ie = UTF-8,百度搜索了下,又增加返回较为简洁的字符串参数 action = opensearch 。
修改后的请求 URL
suggestion。baidu。com/su?sugmode=1&action=opensearch&ie=UTF-8&wd=seo
suggestion。baidu。com/su?sugmode=2&action=opensearch&ie=UTF-8&wd=seo
suggestion。baidu。com/su?sugmode=3&action=opensearch&ie=UTF-8&wd=seo
百度返回 3 种提示模式的 JSON 格式字符串
sugmode = 1
["seo",["seo是什么","seo优化","seo教程","seo查询","seo工具","seo是什么意思","seo培训","seo论坛","seo技术","塞欧"]]
sugmode = 2
["seo",["seo是什么","seo优化","seo教程","seo查询","seo工具","seo是什么意思","seo公司","淘宝seo","seo博客","seo猪八戒网"]]
sugmode = 3
["seo",["seo是什么","seo优化","seo教程","seo查询","seo工具","seo是什么意思","seo培训","seo论坛","seo技术","塞欧"]]

3 种模式随着权重从上到下递减,提示词之间的差异也越来越大。
提示词数量上 sugmode = 1 < sugmode = 2 < sugmode = 3
$jsonsuggestion = json_decode($baidusuggestion);
for ($i = 0; $i <= count($jsonsuggestion[1]) - 1; $i++)
{
    echo $jsonsuggestion[1][$i];
}

用 PHP 的 json_decode 转化成数组就得到关键词的即时下拉框提示词了。

使用亲自动手编的十几行百度相关提示代码过程中,发现相关搜索与下拉框提示 3 个有趣的现象。

  1. 下拉框提示更新较快,会出现24小时内的热门新闻词,相关搜索词比下拉框提示滞后。
    原因之一可能是下拉框提示和输入法类似,会及时把百度搜索风云榜的实时热点更新到词库里,比如搜索扫黄打非,下拉框提示就 1 个扫黄打非净网2014。其他原因放到后面叙述。
    相关搜索像最近用户搜索过 seo 之外,还搜索过藏獒的关系,需要至少 2 次以上的搜索,所以反馈速度比下拉框提示慢。
  2. 通常相关搜索词数比下拉框提示数量多,但是搜索日本女优的名字,下拉框提示数可能比相关搜索更多。
  3. 开启下拉框知心提示模式2(zxmode = 2),再加上参数 p = 1,
    请求黄晓明
    suggestion。baidu。com/su?zxmode=2&p=1&ie=UTF-8&wd=黄晓明
    会返回如下内容
    {{{
    window.baidu.sug({q:"黄晓明",p:false,s:[],"tzx":"输入“黄晓明身高”或“黄晓明年龄”,你会直接得到结果,赶快来试试吧!"});
    }}}

黄晓明身高 180cm, srcid = 6714,百度知心精准答案

黄晓明年龄 36岁, srcid = 6714,百度知心精准答案
请求改成
suggestion。baidu。com/su?zxmode=2&p=1&ie=UTF-8&wd=黄晓明身高
返回语句不通的内容
window.baidu.sug({q:"黄晓明",p:false,s:[],"tzx":"输入“黄晓明身高身高”或“黄晓明身高年龄”,你会直接得到结果,赶快来试试吧!"});

搜索黄晓明身高年龄体重,结果如下图所示

黄晓明(中国一线男星) 身高 180cm 年龄 36岁 体重 65kg, srcid = 6714,百度知心精准答案

网上搜索了下,没有看到有关百度下拉框知心模式隐藏参数(zxmode)的介绍,算是原创研究发现了这个并未得到实际启用的百度下拉框提示功能。

准备把 zxmode =2 加入解释百度搜索结果 F 系参数工具里。

从实用角度看,藏獒显然对 seo 主旨没有多大帮助,而扫黄打非净网2014对主题是扫黄打非的页面较有用。
结合前面提到取得百度下拉框提示词的方法,理论上可以让百度自动优化网页标题。

继续叙下拉框即时提示。
下拉框提示词的排序参数和相关搜索,错别字/拼音提示正确搜索词都是 rsp(related search position)。
2013年01月08日在前任公司曾写过 rsp 这个参数最出名的地方在于许多人愿意花钱在主要关键词上刷出 rsp = [0-9] 的特定长尾关键词引导流量,消除负面内容,同时可以拉升自然排名。
数据统计结果表明相关提示位置的升降和短期点击量多寡颇为密切。
但是搜索引擎如同网游,百度针对影响他们利益的行为采取了一些措施。比如不同浏览器的相关搜索候选词不一致,一段时期甚至取消了下拉框提示,之后的搜索框提示词 rsp = 0, rsp = 1 会展现 2 条搜索历史记录,下拉框提示 JavaScript 中的 me.sugcookie 可能就是搜索历史记录的参数。
在黑帽 seo 与百度反垃圾作弊的纠缠下,如今 rsp = 0 的下拉框提示词还是比较可靠的,同时也为了避免堆砌关键词的嫌疑,用作标题时一般只放第 1 个提示词。对应 PHP 数组的 $jsonsuggestion[1][0]。
将 $jsonsuggestion[1][0] 保存进数据库,避免由于百度下拉框提示词经常更新引起的标题改变。
新标题的格式为 下拉框提示词+标题党+网站品牌,也可以把 $jsonsuggestion[1][0] 加入 Meta keywords。
有了优化过的标题之后,网站编辑就可以根据标题进行伪原创。

效果会比只有 1 个关键词要好,像做 seo 这个关键词,rsp = 0 的下拉框提示词为 seo是什么,新标题是 seo是什么_seo教程 - 搜外,比 seo_seo教程 - 搜外 的权重高一些。

实现代码如下所示
<?php
$query = "seo";
$patterns = array();
$patterns[0] = '/(\s+)/';
$patterns[1] = '/(http:\/\/)/';
$replacements = array();
$replacements[0] = '%20';
$replacements[1] = '';
$queryfilter = preg_replace($patterns[1], $replacements[1], $query);
$queryfilter1 = htmlspecialchars(preg_replace($patterns, $replacements, $query));
$suggestion1 = "http://suggestion.baidu.com/su?action=opensearch&ie=UTF-8&wd=";
$baidusuggestion1 = file_get_contents($suggestion1.$queryfilter1);
$jsonsuggestion1 = json_decode($baidusuggestion1);
echo "<title>".$jsonsuggestion1[1][0];
if
(!is_null($jsonsuggestion1[1][0]))
{
echo "_";
}
echo htmlspecialchars($qfilter,ENT_QUOTES);
if
(!is_null($s))
{
echo " - ";
}
echo "搜外</title>
<meta content=\"".$jsonsuggestion1[1][0].",".htmlspecialchars($queryfilter,ENT_QUOTES)."\" name=\"keywords\" />"
;?>


请珍惜自己的品牌! 本文质量及原创性由搜外网审核,永久保存。【ID:109】点此查核→

作者公告牌

文艺极客QQ群 255363059

管理文章:
赞同 0 回应TA
吴星 · 文艺极客QQ群 255363059

这篇短文是要发表的关于 F1 第 6 位的铺垫,结论是从 F1 参数来的。

李鑫 · SEO主管,一万年太久只争朝夕。

提示下拉框: 根据你输入的关键词进行完全匹配,拓展出更多你可能想要查询的长尾关键词。
相关搜索: 即百度强调的相关性,和你查询的关键词 相关的词语(百度通过自己的相关性词库,根据词语的相关性,搜索量)进而列出10个和你所查词语相关的词.
有的时候一些SEO会去用流量工具刷一些词让它出现在 搜索相关的那个位置.应该就是这个道理了.

张健 · 成都军区机关医院资深优化专家

我觉得百度任何的算法都是按照目前的人群的体验进行调整的,现在是这样可能果断时间就发生了变化。只有更好的跟进才是王道。

吴星 · 文艺极客QQ群 255363059

是自动请求百度下拉框提示,也就是标题可以自动更新,与时俱进。但无法解决的是内容无法同步更新。

赖财富 · 推拿养生

刚刚调试了下上面的PHP,感觉出来的效果不是最优!
缺少算法,比如:算下拉框,相关搜索,首页自然排名title,出现词次数 算分割词;百度右边最下面的推荐搜索!坐等师兄回复!

吴星 · 文艺极客QQ群 255363059

嗯,我 QQ 81952094,加个好友。

胡炎 · 兴趣站长

(!is_null($s))中的$s 指的是什么,网站名称?
另外同一个ip经常请求会不会被百度屏蔽掉

我以前做的一个获取sug做关键词的每天获取一两次就不能再获取了。

吴星 · 文艺极客QQ群 255363059

s是查询词,@夫唯老师的提点,sug有好几个ip,shuffle随机选一个,就好多了

-->