当梦想照进现实

Python批量挖掘百度下拉框关键词

2017.06.23


百度下拉框的关键词,一直是SEO关键词拓展的利器,只要在搜索框中输入一个关键词,就可以得到一批相关词。
我有个小技巧,可瞬间提升上百倍的挖掘效率。并且通过Python实现后,完全可用于大规模关键词的批量挖掘
思路其实很简单,有些朋友也有了解。记得当时跟夜息分享的时候,他一直说666 :)

First Blood

首先,在Chrome的Network中,可以获取到百度下拉框提示的API地址:
https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=黄&sugmode=2&json=1&p=3&sid=1427_21091_21673_22581&req=2&pbs=%E5%BF%AB%E6%89%8B&csor=2&pwd=%E5%BF%AB%E6%89%8B&cb=jQuery11020924966752020363_1498055470768&_=1498055470781

  • 这里的黄山,就是我输入的关键词,可替换为其他任意关键词。
  • 输出的结果,通过简单处理,就是json格式。

具体代码实现如下:

def get_sug(word):
    url = 'https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=%s&sugmode=2&json=1&p=3&sid=1427_21091_21673_22581&req=2&pbs=%%E5%%BF%%AB%%E6%%89%%8B&csor=2&pwd=%%E5%%BF%%AB%%E6%%89%%8B&cb=jQuery11020924966752020363_1498055470768&_=1498055470781' % word
    r = requests.get(url, verify=False)  # 请求API接口,取消了HTTPS验证
    cont = r.content  # 获取返回的内容
    res = cont[41: -2].decode('gbk')  # 只取返回结果中json格式一段,并且解码为unicode
    res_json = json.loads(res)  # json格式转换
    return res_json['s']  # 返回关键词列表


print '\n'.join(get_sug('黄山'))

输出为:

黄山天气
黄鳝
黄山旅游自助攻略
黄山旅游
黄鳝门
黄山毛峰
黄鳝女主播
黄山山顶住宿攻略
黄山市民网
黄山旅游攻略

Double Kill

这里有个小技巧,就是在关键词后面输入w,会出现跟拼音以w开头的一系列关键词,比如“黄山w”,会出现“黄山温泉”,”黄山玩几天“,“黄山五绝”等关键词(见上截图)。因此,当我们把a~z遍历一遍,会出现更多关键词。

升级后,代码实现如下:

def get_more_sug(word):
    all_words = []

    for i in 'abcdefghijklmnopqrstuvwxyz':  
        all_words += get_sug(word+i)  # 遍历字母表 | 利用了上一个函数

    return list(set(all_words))  # 去重

print '\n'.join(get_more_sug('黄山'))

输入结果为:

黄山红方印多少钱一包
黄山区政府网
黄山山顶住宿攻略
黄山开放时间
黄山西海大峡谷
黄山ie修复专家
黄山免费2017
黄山图片
黄山到宏村
黄山怪石
黄山农家乐
黄山哪里上山
黄山论坛
黄山旅游
黄山毛峰品牌
黄山游记
...

Triple Kill

将上面的思路延展一下,如果在关键词后输入两个单词,就会出现以这2个字母为拼音开头的一系列关键词,比如“黄山tp”,会出现“黄山天气”,“黄山太平湖”(见截图2)。因此,我们又做了升级。

def get_most_sug(word):
    all_words = []

    for i in 'abcdefghijklmnopqrstuvwxyz': 
        for j in 'abcdefghijklmnopqrstuvwxyz': 
            all_words += get_sug(word+i+j)

    return list(set(all_words))  # 去重

然后就出现了更多关键词:

黄山云谷索道在哪
黄山开锁
黄山城市风情
黄山评价
黄山能带狗吗
黄山露营
黄山办理港澳通行证
黄山旅游攻略
黄山到广东的高铁
黄山野生猴谷
黄山动车站怎么去黄山脚下
黄山古镇
黄山酒店
黄山太平索道
黄山舰
黄山自驾游
黄山天气预报一周
黄山led显示屏报价
黄山入口
黄山旅游集散中心
黄山阿拉自助游
黄山木雕
黄山北到汤口镇
黄山ppt
黄山特点是啥
黄山半源
黄山屯溪机场到黄山风景区
黄山累不累
黄山到千岛湖怎么坐车
黄山百步云梯
黄山人才网
黄山旅游要多少
黄山敏学教育
黄山银钩
黄山北站
黄山杭徽大酒店
黄山各县市区别墅
黄山卧虎高尔夫
黄山毛峰价格
黄山火车站到黄山屏山
黄山旺季
黄山天都峰
黄山茶庄
黄山宣传片
黄山红方印价格
黄山三日游最佳路线
黄山的诗句
黄山慈光阁索道
黄山一般玩几天
黄山矿泉水
黄山考试网
黄山香烟
黄山别墅
黄山市委党校
...

Legendary

这里还有一些技巧和思路拓展:

  • 如果用作批量跑词,还需要简单包装下,比如关键词循环,数据保存等。
  • 实际应用中,字母单循环的性价比更高(也就是Double Kill),速度和词数都比较可观。字母双循环,速度慢,词量也并没有那么高。
  • 百度移动端是另外一个API,搜狗,360,Google也有不同的API,可以作为扩展方式,脚本需自行完成。

Shut Down

  • 最近在玩王者荣耀,所以小标题用了里面的提示,欢迎大神带我~
  • 最近打算给公众号设置一些结构,比如大的品类分为文章、服务;其中文章里是SEO、Python等栏目,服务里有招聘,工具。这样整体结构更清晰一点。
  • 题图是森林,也是一个小生态。最近正在思考互联网的生态和SEO的影响,之后可能会写一篇相关的文章。

Aced

2017/8/23补充

  • 还有一个获取下拉框关键词的地址:http://suggestion.baidu.com/su?wd=关键词&sugmode=3&json=1(Ginson推荐)
  • 另外其他搜索引擎的下拉框关键词也可以获取作为补充(Ginson推荐)
Comments
Write a Comment
  • 小土豆007 reply

    呵呵呵, 有点意思 。农药:小土豆007

  • 感谢分享。请问api地址是如何得出的?我在network里没有看见类似的地址

    • @Tee ok. i see. 首次搜索是看不见这个东西的。

  • Ginson reply

    推荐一个获取下拉框关键词的地址:http://suggestion.baidu.com/su?wd=关键词&sugmode=3&json=1

    • @Ginson 感谢支持,已经加在正文中

  • Ginson reply

    另外其他搜索引擎的下拉框关键词也可以获取作为补充

  • 爱学习的小虫 reply

    大神,有没有具体的可执行python代码呢?

  • cpy reply

    我写了个爬取百度下拉工具,需要的联系我:q81160093