【亲测好用!】百度凤巢推广关键词批量挖掘导出工具

  • A+
所属分类:SEO工具
本文信息本文由方法SEO顾问发表于2017-03-1718:53:49,共 5258 字,转载请注明:【亲测好用!】百度凤巢推广关键词批量挖掘导出工具_【方法SEO顾问】,如果我网站的文章对你有所帮助的话,来百度口碑给个好评呗!

今天看到@Brooks大神分享了一个百度推广后台关键词批量挖掘并导出的Python程序,分享出来给大家。

下面给大家简单介绍一下怎么用。

首先你需要将工具下载到你电脑上(点击下载百度凤巢推广关键词批量挖掘导出工具),解压开来,应该能看到如下图的文件:

【亲测好用!】百度凤巢推广关键词批量挖掘导出工具

顺序给大家介绍一下各文件的作用:

resultkeys.txt是关键词导出的结果

failed.txt是查询失败的关键词

cookies.txt是存放你自己登录账号后的 cookies的,后面会讲怎么获取

checkwords.txt是你需要拓展的关键词词根,或者叫母词吧!

bdfengchao.py是主程序,Python写的。

下面就是bdfengchao.py的源代码:

  1. # -*- coding: utf-8 -*-  
  2. """ 
  3. verseion: beta2.1 
  4. 说明: 
  5. 百度凤巢挖词脚本 (代码符合PEP8标注) 
  6. 利用百度凤巢关键词规划师工具进行关键词挖掘 
  7. 用到第三方模块:requests 
  8. 详见:http://docs.python-requests.org/zh_CN/latest/user/quickstart.html 
  9. 作者:Brooks,QQ:76231607 
  10. 请勿用于任何商业用户,版权最终归作者所有 
  11. """  
  12. import requests  
  13. import json  
  14. import time  
  15.   
  16.   
  17. def get_result_data(key, uconfig, cookie, retry=3):  
  18.     """获取关键词查询结果数据 
  19.     :param key: 要查询的关键词 
  20.     :param uconfig: 用户配置信息 
  21.     :param cookie: cookie登录信息 
  22.     :param retry: 链接过程失败重试次数 
  23.     :return: 返回json类型数据以及错误信息 
  24.     """  
  25.     headers = {  
  26.         'Accept': '*/*',  
  27.         'Accept-Encoding': 'gzip, deflate',  
  28.         'Accept-Language': 'zh-CN,zh;q=0.8,en;q=0.6',  
  29.         'Connection': 'keep-alive',  
  30.         'Content-Type': 'application/x-www-form-urlencoded',  
  31.         'Cookie': cookie,  
  32.         'Host': 'fengchao.baidu.com',  
  33.         'Origin': 'http://fengchao.baidu.com',  
  34.         'Referer': 'http://fengchao.baidu.com/nirvana/main.html?userid=%s' % uconfig['userid'],  
  35.         'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 '  
  36.         '(KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'  
  37.     }  
  38.     query = 'http://fengchao.baidu.com/nirvana/request.ajax?'\  
  39.             'path=jupiter/GET/kr/word&reqid=%s' % uconfig['reqid']  
  40.   
  41.     params = {  
  42.         "logid": -1,  
  43.         "query": key,  
  44.         "querySessions": [key],  
  45.         "querytype": 1,  
  46.         "regions": "0",  
  47.         "device": 0,  
  48.         "rgfilter": 1,  
  49.         "entry": "kr_wordlist_addwords",  
  50.         "planid": "0",  
  51.         "unitid": "0",  
  52.         "needAutounit": False,  
  53.         "filterAccountWord": True,  
  54.         "attrShowReasonTag": [],  
  55.         "attrBusinessPointTag": [],  
  56.         "attrWordContainTag": [],  
  57.         "showWordContain": "",  
  58.         "showWordNotContain": "",  
  59.         "pageNo": 1,  # 由于pageSize已经是1000,所以不需要再进行分页查询  
  60.         "pageSize": 1000,  
  61.         "orderBy": "",  
  62.         "order": "",  
  63.         "forceReload": True  
  64.     }  
  65.     form_data = {  
  66.         'params': json.dumps(params),  
  67.         'path': 'jupiter/GET/kr/word',  
  68.         'userid': uconfig['userid'],  
  69.         'token': uconfig['token'],  
  70.         'eventId': uconfig['eventId'],  
  71.         'reqid': uconfig['reqid']  
  72.     }  
  73.   
  74.     try:  
  75.         resp = requests.post(query, headers=headers, data=form_data, timeout=10)  
  76.     except requests.exceptions.RequestException:  
  77.         resultitem = {}  
  78.         err = "请求了那么多次,百度还是没给返回正确的信息!"  
  79.         if retry > 0:  
  80.             return get_result_data(key, uconfig, cookie, retry - 1)  
  81.     else:  
  82.         resp.encoding = 'utf-8'  
  83.         try:  
  84.             resultitem = resp.json()  
  85.         except ValueError:  
  86.             resultitem = {}  
  87.             err = "获取不到json数据,可能是被封了吧,谁知道呢?"  
  88.         else:  
  89.             err = None  
  90.     return resultitem, err  
  91.   
  92.   
  93. def parse_data(datas):  
  94.     """用于解析获取回来的json数据 
  95.     :param datas: json格式的数据 
  96.     :return: 返回关键词列表以及错误信息 
  97.     """  
  98.     try:  
  99.         resultitem = datas['data']['group'][0]['resultitem']  
  100.     except (KeyErrorValueErrorTypeError):  
  101.         kws = []  
  102.         err = '获取不到关键词数据'  
  103.     else:  
  104.         kws = ['{}\t{}'.format(item['word'].encode('utf-8'), item['pv']) for item in resultitem]  
  105.         err = None  
  106.     return kws, err  
  107.   
  108.   
  109. if __name__ == '__main__':  
  110.     sfile = open('resultkeys.txt', 'w')  # 结果保存文件  
  111.     faileds = open('faileds.txt', 'w')  # 查询失败保存文件  
  112.     checkwords = [word.strip() for word in open('checkwords.txt')]  # 要查询的关键词列表  
  113.     cookies = open('cookie.txt').read().strip()  # cookie文件, 里面只放一条可用的cookie即可  
  114.     # 用户配置信息,请自行登录百度凤巢后台通过抓包获取 (以下只是虚拟数据不能直接使用)  
  115.     config = {  
  116.         'userid': 6112345,  
  117.         'token': 'e3223414e798481dd281123459971fed37abba41c64dcdb224e7c5000000000b0a0fa26f1f0a086f2bb59d',  
  118.         'eventId': '12344c46-12a4-12a4-1209-123474436233',  
  119.         'reqid': '12344c46-12a4-12a4-3a59-123474436233'  
  120.     }  
  121.     for word in checkwords:  
  122.         print '正在查询:', word  
  123.         print '-' * 50  
  124.         dataresult, error = get_result_data(word, config, cookies)  
  125.         if error:  
  126.             print word, error  
  127.             faileds.write('%s\n' % word)  
  128.             faileds.flush()  
  129.             continue  
  130.         keywordlist, error = parse_data(dataresult)  
  131.         if error:  
  132.             print word, error  
  133.             faileds.write('%s\n' % word)  
  134.             faileds.flush()  
  135.             continue  
  136.         for kw in keywordlist:  
  137.             sfile.write("%s\n" % kw)  
  138.             sfile.flush()  
  139.             print kw  
  140.         print '=' * 50  
  141.         time.sleep(2)  # 每个词的查询间隔时间为2秒,如果不怕被封,可以直接去掉  
  142.     sfile.close()  
  143.     faileds.close()  
  144.     print "所有关键词查询完毕"  

效果如下图所示:

下面来给大家说说关键部分,如何获取工具中必备的cookie信息,以及其他几个值

第一步,最好使用Google Chrome来登录自己的百度推广账号

第二步,打开关键词规划师,URL大概是http://fengchao.baidu.com/nirvana/main.html?userid=1234567#/overview/index~openTools=krStation

第三步,按下F12,打开浏览器的开发者工具,切换到Network选项卡,然后搜索一个词,例如“SEO”,然后。。。。不知道咋说,看图吧!把Cookie:后面的值复制下来,存到cookie.txt里

然后将下面红框中的信息,相应填到程序源代码里替换原来的。

然后,就直接运行bdfengchao.py吧,结果就出来了。。。。。。

写教程好累,这么简单的操作,写出来这么麻烦。。。。哎,自己领悟吧。

如果有帮助,下面留个言吧。

  • 版权声明:除非注明,本博客均为北京SEO方法的原创文章,转载或引用请以超链接形式标明本文地址,否则会在SEO圈内公开此种不尊重版权的行为,谢谢合作!本文地址:https://seofangfa.com/seo-tool/bdfengchao.html
  • 转载请注明:【亲测好用!】百度凤巢推广关键词批量挖掘导出工具_ 【方法SEO顾问】

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:5   其中:访客  0   博主  0

    • avatar Paul

      最近不好用了,基本上都被redirect到百度cas.baidu.com这个网址

      • avatar Ginson

        百度推广有个API可以直接获取词啊,而且是批量获取,一次可以提交100个种子词
        API更方便点

        • avatar haynes

          现在是不是不能用了???

          • avatar 阿锋

            看见是17年更新的,相信还能用,就按教程做了
            第一次使用python,遇到个小问题,给本地环境安装requests安装包,就可以正常使用了,感谢@方法 @@Brooks

              • avatar 方法SEO

                @阿锋 应该说是的2017年3月更新的 :)