【数坊人群计算2.0】

0、前言

前段时间写了个简单的人群计算程序数坊自动人群计算1.0,最近时间比较充裕,所以决定完善一下,增加了多标签的人群计算,增加了广告、已有人群、属性等常用标签,虽然BUG百出,但亲测勉强能用

其实计算逻辑很简单,上传人群逻辑到接口就会返回人群大小,比较复杂的地方主要在于人群逻辑表格的搭建与表格转为可上传的JSON数据,自动圈包也类似只不过接口不同而已

1、搭建逻辑

每一行表示一个标签,每一列表示一个参数,不需要或不限就不填
人群名称相同则视为一个人群包,多标签间运算逻辑通过运算列控制
品牌为不填时会默认为三级类目,品牌不为空时(可任意写,只要不为空值)则默认为品牌*三级类目

人群名称 运算 卡片名称 品牌 类目 开始时间 结束时间 频次 价格 渠道 行为 身份 已有人群 属性
人群1 浏览行为 XX 家用电器-大家电-平板电视 2022-04-01 2022-04-15
人群1 交集 购买行为 家用电器-大家电-平板电视 2022-04-01 2022-04-15
人群1 差集 购买行为 XX 家用电器-大家电-平板电视 2022-04-01 2022-04-15
人群2 浏览行为 XX 家用电器-大家电-平板电视 2022-04-01 2022-04-15
人群3 购买行为 家用电器-大家电-平板电视 2022-04-01 2022-04-15

2、构建卡片DATA

2.0 获取所需ID

需要的ID有用户行为中品牌ID,类目ID,与广告行为中的广告ID

2.0.1 获取品牌&类目ID

通过输入账号cookie自动获取品牌ID,因此逻辑表中可以随便写,但类目要按格式写

def get_core_id(cookie, cate_name): # 拿品牌三级类目id

    cate1 = list(cate_name.split('-'))[0]
    cate2 = list(cate_name.split('-'))[1]
    cate3 = list(cate_name.split('-'))[2]

    url = 'https://4a.jd.com/datamill/api/accountManagement/mainAccountInfoOuter/brandInfo?pageNum=0&pageSize=10'
    headers = {
   
        'user-agent': 'PostmanRuntime/7.28.4',
        "accept": "*/*",
        'cookie': cookie
    }
    txt = requests.get(url, headers=headers).text
    data = json.loads(txt)["result"]["data"][0]
    brand_id = data['brandCode']
    cate_list = data["category"]

    for i in range(30):
        if cate_list[i]["name"] == cate1:
            cate_id1 = cate_list[i]["categoryCode"]
            cate_children = cate_list[i]["children"]
            break

    for j in range(30):
        if cate_children[j]["name"] == cate2:
            cate_id2 = cate_children[j]["categoryCode"]
            cate_grandson = cate_children[j]["children"]
            break

    for k in range(30):
        if cate_grandson[k]["name"] == cate3:
            cate_id3 = cate_grandson[k]["categoryCode"]
            break

    cate_id = str(cate_id1) + "_" + str(cate_id2) + "_" + str(cate_id3)
    id_data = {
   
        "brand_id": brand_id,
        "cate_id": cate_id
    }
    return id_data
2.0.2 获取广告ID

进入人群圈选点击广告行为卡片时后台会弹出一条lineList请求,其中包含数坊权限内全部的广告触点与对应ID,使用EXCEL表中名称全部匹配为ID后组合为一条ID来实现渠道多选

def get_ad_id(cookie, ad_name): # 拿广告id
    name_list = ad_name.split(",")
    ad_id = ''
    url = 'https://4a.jd.com/datamill/api/audienceManagement/newCustomAudienceEditInner/lineList'
    headers = {
   
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36',
        'cookie': cookie
    }
    txt = requests.get(url, headers=headers).text
    data_list = json.loads(txt)["result"]["data"]
    for data in data_list:
        if data["name"] in name_list:
            ad_id += str(data["id"])
            ad_id += ','
    return ad_id.rstrip(",")

2.1 购买行为

购买行为设定传入品牌ID、类目ID、时间段(开始时间与结束时间)、频次、价格,
当频次或价格为"不限"时输入为空

def get_order_data(cookie, brand_name, cate_name, start_time, end_time, frequency, price):  # 购买行为
    brand_id = get_core_id(cookie, cate_name)["brand_id"]
    cate_id = get_core_id(cookie, cate_name)["cate_id"]
    data = {
   
            "cardType": "order",
            "cardCode": "300662",
            "type": "behaviorV2",
            "key": "order",
            "screen": "all",
            "dimension": "3" if pd.isnull(brand_name) else "2",
            "brandCode": '' if pd.isnull(brand_name) else str(brand_id),
            "cateList": str(cate_id) if pd.isnull(brand_name
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值