百度凤巢推广关键词批量挖掘导出工具

更新时间:2018-10-06 分类:推广技巧 浏览量:7033

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

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

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

百度凤巢推广关键词批量挖掘导出工具

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

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

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

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

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

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

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


# -*- coding: utf-8 -*-  
""" 
verseion: beta2.1 
说明: 
百度凤巢挖词脚本 (代码符合PEP8标注) 
利用百度凤巢关键词规划师工具进行关键词挖掘 
用到第三方模块:requests 
详见:http://docs.python-requests.org/zh_CN/latest/user/quickstart.html 
作者:Brooks,QQ:76231607 
请勿用于任何商业用户,版权最终归作者所有 
"""  
import requests  
import json  
import time  
  
  
def get_result_data(key, uconfig, cookie, retry=3):  
    """获取关键词查询结果数据 
    :param key: 要查询的关键词 
    :param uconfig: 用户配置信息 
    :param cookie: cookie登录信息 
    :param retry: 链接过程失败重试次数 
    :return: 返回json类型数据以及错误信息 
    """  
    headers = {  
        'Accept': '*/*',  
        'Accept-Encoding': 'gzip, deflate',  
        'Accept-Language': 'zh-CN,zh;q=0.8,en;q=0.6',  
        'Connection': 'keep-alive',  
        'Content-Type': 'application/x-www-form-urlencoded',  
        'Cookie': cookie,  
        'Host': 'fengchao.baidu.com',  
        'Origin': 'http://fengchao.baidu.com',  
        'Referer': 'http://fengchao.baidu.com/nirvana/main.html?userid=%s' % uconfig['userid'],  
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 '  
        '(KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'  
    }  
    query = 'http://fengchao.baidu.com/nirvana/request.ajax?'\  
            'path=jupiter/GET/kr/word&reqid=%s' % uconfig['reqid']  
  
    params = {  
        "logid": -1,  
        "query": key,  
        "querySessions": [key],  
        "querytype": 1,  
        "regions": "0",  
        "device": 0,  
        "rgfilter": 1,  
        "entry": "kr_wordlist_addwords",  
        "planid": "0",  
        "unitid": "0",  
        "needAutounit": False,  
        "filterAccountWord": True,  
        "attrShowReasonTag": [],  
        "attrBusinessPointTag": [],  
        "attrWordContainTag": [],  
        "showWordContain": "",  
        "showWordNotContain": "",  
        "pageNo": 1,  # 由于pageSize已经是1000,所以不需要再进行分页查询  
        "pageSize": 1000,  
        "orderBy": "",  
        "order": "",  
        "forceReload": True  
    }  
    form_data = {  
        'params': json.dumps(params),  
        'path': 'jupiter/GET/kr/word',  
        'userid': uconfig['userid'],  
        'token': uconfig['token'],  
        'eventId': uconfig['eventId'],  
        'reqid': uconfig['reqid']  
    }  
  
    try:  
        resp = requests.post(query, headers=headers, data=form_data, timeout=10)  
    except requests.exceptions.RequestException:  
        resultitem = {}  
        err = "请求了那么多次,百度还是没给返回正确的信息!"  
        if retry > 0:  
            return get_result_data(key, uconfig, cookie, retry - 1)  
    else:  
        resp.encoding = 'utf-8'  
        try:  
            resultitem = resp.json()  
        except ValueError:  
            resultitem = {}  
            err = "获取不到json数据,可能是被封了吧,谁知道呢?"  
        else:  
            err = None  
    return resultitem, err  
  
  
def parse_data(datas):  
    """用于解析获取回来的json数据 
    :param datas: json格式的数据 
    :return: 返回关键词列表以及错误信息 
    """  
    try:  
        resultitem = datas['data']['group'][0]['resultitem']  
    except (KeyError, ValueError, TypeError):  
        kws = []  
        err = '获取不到关键词数据'  
    else:  
        kws = ['{}\t{}'.format(item['word'].encode('utf-8'), item['pv']) for item in resultitem]  
        err = None  
    return kws, err  
  
  
if __name__ == '__main__':  
    sfile = open('resultkeys.txt', 'w')  # 结果保存文件  
    faileds = open('faileds.txt', 'w')  # 查询失败保存文件  
    checkwords = [word.strip() for word in open('checkwords.txt')]  # 要查询的关键词列表  
    cookies = open('cookie.txt').read().strip()  # cookie文件, 里面只放一条可用的cookie即可  
    # 用户配置信息,请自行登录百度凤巢后台通过抓包获取 (以下只是虚拟数据不能直接使用)  
    config = {  
        'userid': 6112345,  
        'token': 'e3223414e798481dd281123459971fed37abba41c64dcdb224e7c5000000000b0a0fa26f1f0a086f2bb59d',  
        'eventId': '12344c46-12a4-12a4-1209-123474436233',  
        'reqid': '12344c46-12a4-12a4-3a59-123474436233'  
    }  
    for word in checkwords:  
        print '正在查询:', word  
        print '-' * 50  
        dataresult, error = get_result_data(word, config, cookies)  
        if error:  
            print word, error  
            faileds.write('%s\n' % word)  
            faileds.flush()  
            continue  
        keywordlist, error = parse_data(dataresult)  
        if error:  
            print word, error  
            faileds.write('%s\n' % word)  
            faileds.flush()  
            continue  
        for kw in keywordlist:  
            sfile.write("%s\n" % kw)  
            sfile.flush()  
            print kw  
        print '=' * 50  
        time.sleep(2)  # 每个词的查询间隔时间为2秒,如果不怕被封,可以直接去掉  
    sfile.close()  
    faileds.close()  
    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吧,结果就出来了。。。。。。

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

如果有帮助,下面留个言吧。(转自:方法博客