步骤
1、查询昨日关键词报告,获取点击率大于10%和点击率小于4%的关键词信息。
2、调整价格信息,关键词点击率大于10%的关键词价格调整为原价格的95%
关键词点击率小于4%且价格小于10元的,将价格调整为原有价格的1.05倍。

import requests,json,datetime#获取昨天日期
def getYesterday(): today=datetime.date.today() oneday=datetime.timedelta(days=1) yesterday=today-oneday  return yesterday#获取指定期间关键词信息,返回大于10%的和小于4%的关键词列表,以供后续使用
def select_keywords():yesterday = getYesterday()url = "https://api.baidu.com/json/sms/service/ReportService/getRealTimeData"payload = "{\n\t\"header\":{\n\t\t\"username\":\"【百度推广账户】\",\n\t\t\"token\":\"【百度推广token】\",\n\t\t\"password\":\"【百度推广密码】\"\n\t},\n\t\"body\":{\n\t\t\"realTimeRequestType\":{\n\t\t\t\"performanceData\":[\"impression\",\"click\",\"cost\",\"cpc\",\"ctr\",\"cpm\",\"conversion\"],\n\t\t\t\"levelOfDetails\":11,\n\t\t\t\"startDate\":\""+str(yesterday)+" 00:00:00\",\n\t\t\t\"endDate\":\""+str(yesterday)+" 23:59:59\",\n\t\t\t\"unitOfTime\":1,\n\t\t\t\"reportType\":14\n\t\t}\n\t}\n}"headers = {'Content-Type': 'text/plain'}response = requests.request("POST", url, headers=headers, data = payload.encode())json_res = json.loads(response.text.encode('utf-8'))state = json_res['header']['desc']body_data_wordsid = json_res['body']['data'][0]['id']#impression\",\"click\",\"cost\",\"cpc\",\"ctr\",\"cpm\",\"conversion\than_10_percent_wordid = []less_4_percent_wordid = []for row in  json_res['body']['data']:words_id = row['id']words_kpis_impression = row['kpis'][0] #展现量words_kpis_click = row['kpis'][1] #点击量words_kpis_cost = row['kpis'][2]  #花费words_kpis_cpc = row['kpis'][3] #平均点击价格words_kpis_ctr = row['kpis'][4] #点击率words_kpis_cpm = row['kpis'][5] words_name = row['name'][3] #关键词名称#如果点击率大于10%if float(words_kpis_ctr) > 0.1:#print("大于10%的有",words_name,words_id,words_kpis_impression,words_kpis_click,words_kpis_cost,words_kpis_cpc,'点击率ctr',words_kpis_ctr)than_10_percent_wordid.append(words_id)elif float(words_kpis_ctr) < 0.04:#print("小于4%的有",words_name,words_id,words_kpis_impression,words_kpis_click,words_kpis_cost,words_kpis_cpc,'点击率ctr',words_kpis_ctr)less_4_percent_wordid.append(words_id)print("ctr大于10%的有",than_10_percent_wordid)print("ctr小于4%的有",less_4_percent_wordid)return than_10_percent_wordid,less_4_percent_wordid#通过列表wordid 查询 keyword 信息(价格,名称,id等)
def wordid_select_info(wordiditems):url = "https://api.baidu.com/json/sms/service/KeywordService/getWord"payload = "{\n\t\"header\":{\n\t\t\"username\":\"【百度推广账户】\",\n\t\t\"token\":\"【百度推广token】\",\n\t\t\"password\":\"【百度推广密码】\"\n\t},\n\t\"body\":{\n\t\t\"ids\":"+str(wordiditems)+",\n\t\t\"idType\":11,\n\t\t\"getTemp\":0,\n\t\t\"wordFields\":[\n\t\t\t\"keywordId\",\n\t\t\t\"keyword\",\n\t\t\t\"adgroupId\",\n\t\t\t\"price\",\n\t\t\t\"matchType\",\n\t\t\t\"pcQuality\",\n\t\t\t\"mobileQuality\"\n\t\t\t]\n\t}\n}"headers = {'Content-Type': 'text/plain'}response = requests.request("POST", url, headers=headers, data = payload.encode())json_res = json.loads(response.text.encode('utf8'))state = json_res['header']['desc']words_info = []for row in json_res['body']['data']:keywordId = row['keywordId']price = row['price']keyword = row['keyword']words_info.append([keyword,price,keywordId])print(words_info)return words_info#根据wordid更新关键词价格
def update_word_price(wordid,price):url = "https://api.baidu.com/json/sms/service/KeywordService/updateWord"payload = "{\n\t\"header\":{\n\t\t\"username\":\"【百度推广账户】\",\n\t\t\"token\":\"【百度推广token】\",\n\t\t\"password\":\"【百度推广密码】\"\n\t},\n\t\"body\":{\n\t\t\"keywordTypes\":[\n\t\t\t{\n\t\t\t\t\"keywordId\":"+str(wordid)+",\n\t\t\t\t\"price\":"+str(price)+"\n\t\t\t}\n\t\t\t]\n\t}\n}"headers = {'Content-Type': 'text/plain'}response = requests.request("POST", url, headers=headers, data = payload.encode())json_res = json.loads(response.text.encode('utf8'))state =  json_res['header']['desc']print(wordid,"价格成功更新为:",price)return state#点击率大于10%的关键词出价降低5%
def ctr_than_10_percent_reduce_5_percent_price(worditems):print()if __name__ == '__main__':print("----开始更新每日价格-----")than_10_percent_wordid,less_4_percent_wordid = select_keywords()than_10_percent_wordid_words_info = wordid_select_info(than_10_percent_wordid)less_4_percent_wordid__words_info = wordid_select_info(less_4_percent_wordid)print("ctr大于10%的words")#点击率大于10%的,将价格设置为原来的95%for word1 in than_10_percent_wordid_words_info:word1_id = word1[2]word1_price = float(word1[1])new_word1_price = word1_price * 0.95update_word_price(word1_id,new_word1_price)print(word1_id,'--原价格为:',word1_price,"--更新后价格为:",new_word1_price)print("ctr小于4%的words")#点击率小于4%的价格增加为原来价格的1.05倍。for word2 in less_4_percent_wordid__words_info:word2_id = word2[2]word2_price = float(word2[1]) new_word2_price = word2_price * 1.05#仅设置价格小于10的关键词if word2_price < 10:update_word_price(word2_id,new_word2_price)print(word2_id,'--原价格为:',word2_price,"--更新后价格为:",new_word2_price)else:print(word2_id,"价格大于10的无需更新!现在价格为:",word2_price)print("---已完成所有价格更新---")

执行结果展示如下

python 利用百度推广API接口,每日调整关键词价格,关键词点击率大于10%的进行降低价格和点击率小于4%进行增加价格相关推荐

  1. python使用百度云API接口图片卡通化

    python使用百度云API接口图片卡通化: import requests import base64class AnimeDemo:def __init__(self,AK,SK):self.AK ...

  2. python 接入百度地图数据包下载_Python爬虫-利用百度地图API接口爬取数据并保存至MySQL数据库...

    首先,我这里有一份相关城市以及该城市的公园数量的txt文件: 分析-02.png 其次,利用百度地图API提供的接口爬取城市公园的相关信息. 所利用的API接口有两个: 1.http://api.ma ...

  3. Python 技术篇-百度语音合成API接口调用演示

    百度语音合成api文档 现在演示的是调用百度语音合成,然后再转化为本地 mp3 的内容. 重要:tok 参数的获取请看上一篇文章: Python 技术篇-百度语音API鉴权认证获取Access Tok ...

  4. Python 技术篇-百度语音识别API接口调用演示

    百度语音识别api官网文档 现在演示的是识别音频文件的内容. 重要:token 参数的获取请看上一篇文章: Python 技术篇-百度语音API鉴权认证获取Access Token 注:下面的 tok ...

  5. 【python】python利用百度地图API:获取经纬度、地图撒点

    本文目的: python通过百度地图API,获取所给地址的经纬度,并且在百度地图上进行撒点. 另:百度地图API功能强大,如: GPS功能(单个点沿线运动). 信息窗口示例(添加纯文字的信息窗口). ...

  6. 利用百度地图API接口自制地图

    首先注册成为开发者百度地图开放平台 | 百度地图API SDK | 地图开发 创建一个服务器端应用,这个应用是为了查询地点的经纬度 把地点存一个csv文件,为了查询准确把市和区补在地点前面,通过pyt ...

  7. 利用百度云API接口上传照片进行植物识别

    第一步还是引库,确定自己安装过这些库了,没有安装的需要自行安装 import requests import base64 import os #os库是下面多张图片进行识别的,如果一次识别一张图片就 ...

  8. Python 调用 百度地图API接口 查询 详细地址名称 [转载]

    需要批量 查询文件中的地址在 百度地图中的名称 与坐标 Step 1 . 下载chromedriver 下载地址 : ChromeDriver下载. 注意需要下载和chrome浏览器相同版本的driv ...

  9. Python 技术篇-百度语音API鉴权认证获取Access Token实例演示

    百度语音官方鉴权认证文档 下面来为大家进行鉴权认证获取Access Token的演示: 首先需要创建自己的个人语音应用,在应用列表里进行创建. 百度语音个人应用列表 然后用这个应用里的 API Key ...

最新文章

  1. python-opencv 形态学
  2. ionic4中的手势事件
  3. opencv 白平衡
  4. REVERSE-PRACTICE-BUUCTF-30
  5. JavaScript 常用代码整理
  6. 华为搭载鸿蒙系统的手表,华为手表Watch 3即将发布:搭载鸿蒙系统
  7. 深度学习工程师能力评估标准
  8. [蓝桥杯历届试题] 汉诺塔计数
  9. button执行onclick函数_JavaScript 函数定义与调用
  10. 有没有一种软件,可以输入乐谱就能自动演奏的?
  11. wdr7660虚拟服务器设置,TP-Link TL-WDR7660路由器密码设置
  12. php家族族谱代码,家族族谱系统设计.doc
  13. 微信直播王者荣耀设置教程(微信教程)
  14. 离职时如何拒绝领导的挽留
  15. CCNA Security 网院期末考试
  16. 投资中的N种认知偏差总有一款败你
  17. 锂电池原理与使用保养
  18. 数据库原理及应用(六)SQL Server关系数据库系统
  19. fetch请求cookie设置
  20. 一文了解各大图数据库查询语言(Gremlin vs Cypher vs nGQL)| 操作入门篇

热门文章

  1. phpstorm 设置等号对齐
  2. java+swing+mysql开发的学生卡管理系统
  3. 【Linux基础】常用开发工具——yum包管理工具
  4. linux中怎么运行chkdsk,是否有适用于Ubuntu的chkdsk等效文件?
  5. 针对间接分支的比特级感知预测器BLBP “Bit-level Perceptron Prediction for Indirect Branches”(2019 ISCA)
  6. 序列向量和时间向量matlab,MATLAB日期和时间处理
  7. 通达信破解接口主要连接哪两个端口?
  8. 【山外笔记-计算机网络·第7版】第01章:计算机网络概述
  9. 大模型时代的来临:AI如何改变人类生活和经济?
  10. MySQL过滤分组关键字_MySQL教程76-HAVING 过滤分组