百度推广关键词规划师关键词获取,Python凤巢关键词采集工具

百度推广,也就是百度凤巢,相信从业人员应该是相当熟悉,里面有不少好用的工具,而关键词规划师可谓是必用工具之一,不管是你是seo还是sem,它都能够用上!

pic_001.jpg

2009年4月20日,全球最大的中文搜索引擎百度正式推出搜索推广专业版,即此前受到业界广泛关注的“凤巢”推广系统。2009年12月1日,百度按照原定计划全面启用搜索营销专业版(即凤巢系统),凤巢将全面接管百度所有的推广位置,而原有的搜索营销经典版(即竞价排名)将从此告别历史舞台。

pic_002.jpg

新版

老版

犯了一个傻蛋问题:

data_lists=data_lists.extend(data_list)

data_lists一直返回 None!

append()跟extend() 没有返回值

调试了许久!!!


对Python的List进行更新主要用到两个方法:append()跟extend()

append()是在List最后进行插入

extend()更像是拼接,可以拼接另一个列表

需要注意的是这两个方法都没有返回值,只是在原列表上进行修改,不会返回一个新的修改后的列表

如下代码:print()输出的都是None,因为append没有返回值,所以new_menulist的值为None

session = DBSession()
DB = session.query(sys_role).filter(sys_role.dele != 2).all()
new_menu = {"menuid": menuid, "insert": 0, "delete": 0, "edit": 0, "select": 0}
for item in DB:
    old_menulist = json.loads(item.menulist)
    new_menulist = old_menulist.append(new_menu)
    print(new_menulist)

稍微修改一下就可以正确输出:

session = DBSession()
DB = session.query(sys_role).filter(sys_role.dele != 2).all()
new_menu = {"menuid": menuid, "insert": 0, "delete": 0, "edit": 0, "select": 0}
for item in DB:
    old_menulist = json.loads(item.menulist)
    old_menulist.append(new_menu)
    item.menulist = json.dumps(old_menulist)

这些都是Python的基础,写多了就好了

来源:CSDN博主「Fortuna_」


运行效果:

pic_009.gif

采集效果:

pic_010.jpg

注意协议头及post data数据需要获取正确,这里我把自己的省略了,可自行添加!

附上源码:

#百度凤巢关键词获取
#20200116 by 微信:huguo00289
# -*- coding: UTF-8 -*-
#老地址:http://fengchao.baidu.com/nirvana/main.html?userid=userid#/app/index
import requests
import json
import time
import xlsxwriter


headers={

}


#采集关键词数据
def get_keywords(key,page):
    sem_datas=[]
    url="http://fengchao.baidu.com/nirvana/request.ajax?path=jupiter/GET/kr/word&reqid=4b534c46-4342-49f9-eba6-157924910171"
    data = {
       
    }
    response=requests.post(url,data=data,headers=headers,timeout=10)
    time.sleep(2)
    print(response.status_code)
    req=response.content.decode('utf-8')
    reqs=json.loads(req)
    datas=reqs['data']['group'][0]['resultitem']
    datas_num=len(datas)
    print(datas_num)
    if datas_num>0:
        for data in datas:
            word=data['word']  #关键词
            pv = data['pv']  #整体日均搜索量
            pvPc = data['pvPc']  #PC端日均搜索量
            pvWise = data['pvWise']  #移动日均搜索量
            kwc = data['kwc']  #竞争激烈程度
            recBid=data['recBid']  #预估价格
            recBidPc = data['recBidPc']  # PC端预估价格
            recBidWise = data['recBidWise']  #移动端预估价格
            sem_data=[word,pv,pvPc,pvWise,kwc,recBid,recBidPc,recBidWise]
            print(sem_data)
            sem_datas.append(sem_data)


    return sem_datas,datas_num


#数据写入excle表格
def write_to_xlsx(key,data_lists):
    print("关键词数据正在写入excel...")
    workbook = xlsxwriter.Workbook('{}_search_results.xlsx'.format(key))  # 创建一个Excel文件
    worksheet = workbook.add_worksheet(key)
    title = ['关键词', '整体日均搜索量', 'PC端日均搜索量', '移动日均搜索量', '竞争激烈程度', '预估价格',"PC端预估价格","移动端预估价格"]  # 表格title
    worksheet.write_row('A1', title)
    for index, data in enumerate(data_lists):
        num0 = str(index + 2)
        row = 'A' + num0
        worksheet.write_row(row, data)
    workbook.close()
    print("关键词数据写入excel成功!")


#运行函数
def main(key,num):
    data_lists=[]
    num=int(num)
    for i in range(1,num+1):
        print(f"正在采集第 {i} 页关键词数据信息")
        serach=get_keywords(key, i)
        data_list=serach[0]
        if serach[1]==0:
            print(f"关键词{key}没有第{i}页数据,停止采集!")
            break
        data_lists.extend(data_list)
        print(data_lists)
        time.sleep(3)


    datas_num=len(data_lists)
    print(f'共采集到 {datas_num} 条数据!')
    write_to_xlsx(key, data_lists)



if __name__=="__main__":
    key="seo"
    page=2
    main(key,page)