吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 821|回复: 0
收起左侧

[经验求助] Python修改分类信息

[复制链接]
klbengbeng 发表于 2022-3-11 10:45
25吾爱币
自己把cateconfs下的分类只保留手机,家电。可是运行时还是会获取到其他分类
[Asm] 纯文本查看 复制代码
# 获取抽奖大厅分类列表
# {"availableQuota":"20000.00","cateConfs":[{"indexTabConfVos":[{"paramStr":"{\"materialId\": \"6708\"}","title":"推荐"}],"title":"推荐"},{"indexTabConfVos":[{"paramStr":"{\"materialId\": \"3756\"}","title":"百货"}],"title":"百货"},{"indexTabConfVos":[{"paramStr":"{\"materialId\": \"3761\"}","title":"美食"}],"title":"美食"},{"indexTabConfVos":[{"paramStr":"{\"queryWord\": \"手机\"}","title":"手机"}],"title":"手机"},{"indexTabConfVos":[{"paramStr":"{\"queryWord\": \"电脑\"}","title":"电脑"}],"title":"电脑"},{"indexTabConfVos":[{"paramStr":"{\"materialId\": \"3759\"}","title":"家电"}],"title":"家电"},{"indexTabConfVos":[{"paramStr":"{\"materialId\": \"3767\"}","title":"美衣"}],"title":"美衣"},{"indexTabConfVos":[{"paramStr":"{\"materialId\": \"3764\"}","title":"男装"}],"title":"男装"},{"indexTabConfVos":[{"paramStr":"{\"queryWord\": \"饰品\"}","title":"饰品"}],"title":"饰品"},{"indexTabConfVos":[{"paramStr":"{\"materialId\": \"3763\"}","title":"美妆"}],"title":"美妆"},{"indexTabConfVos":[{"paramStr":"{\"queryWord\": \"家纺\"}","title":"家纺"}],"title":"家纺"},{"indexTabConfVos":[{"paramStr":"{\"materialId\": \"3758\"}","title":"家居"}],"title":"家居"},{"indexTabConfVos":[{"paramStr":"{\"materialId\": \"3766\"}","title":"运动"}],"title":"运动"},{"indexTabConfVos":[{"paramStr":"{\"materialId\": \"3760\"}","title":"母婴"}],"title":"母婴"},{"indexTabConfVos":[{"paramStr":"{\"materialId\": \"3765\"}","title":"内衣"}],"title":"内衣"},{"indexTabConfVos":[{"paramStr":"{\"materialId\": \"3762\"}","title":"鞋包"}],"title":"鞋包"},{"indexTabConfVos":[{"paramStr":"{\"queryWord\": \"车饰\"}","title":"车品"}],"title":"车品"}],"categories":[{"materialId":"6708","name":"推荐"},{"favoritesId":"2020738001","materialId":"31539","name":"豪礼"},{"materialId":"3756","name":"热门"},{"materialId":"3761","name":"美食"},{"materialId":"3763","name":"美妆"},{"materialId":"3759","name":"家电"},{"materialId":"3767","name":"美衣"},{"materialId":"3760","name":"母婴"},{"materialId":"3758","name":"家居"},{"materialId":"3762","name":"鞋包"},{"materialId":"3765","name":"内衣"},{"materialId":"3764","name":"男装"},{"materialId":"3766","name":"运动"}],"continueSignNum":"0","duplicateActivityVos":[],"everyLoginQuota":false,"idem":true,"itemVoList":[{"activityId":"2021080500821414400","afterButtonText":"已参与","basePrice":0,"beforeButtonText":"免费抽奖","expireFlag":false,"itemId":"624225931498","itemNum":0,"itemType":"TBK_GOODS","lotteryPersonText":"累计70.12万人参与抽奖","luckDogText":"已有1人中奖","needPropNum":0,"participateCount":701169,"pictUrl":"https://img.alicdn.com/i3/654143820/O1CN01QMTSrq1e5bfK...
def alipay_mobile_aggrbillinfo_user_sign_list(s):
    operation_type = 'alipay.mobile.aggrbillinfo.user.sign.list'
    base_info = json.loads(s.exports.get_rpc_base_info())
    request_data = json.dumps([{
        'apdid': base_info['apdid'],
        'clientKey': base_info['clientKey'],
        'clientVersion': base_info['clientVersion'],
        'model': base_info['model'],
        'platform': base_info['platform'],
        'token': base_info['token'],
        'userId': base_info['userId'],
        'utdid': base_info['utdid'],
    }], separators=(',', ':'))
    ts = get_ts()
    sign = alipay_sign(s, operation_type, request_data, ts)
    # print(sign)

    headers = alipay_headers(s, base_info, operation_type, ts, sign)
    return alipay_request(headers, request_data)
    # cateConfs 字段下为各分类信息
def collect_lottery_items_info(s, cate_confs, limit_quota, depth):
    # 收集分类参数
    titles = list()
    param_strs = list()
    print('开始收集商品分类信息...')
    for cate in cate_confs:
        if 'indexTabConfVos' in cate:
            for tab in cate['indexTabConfVos']:
                if 'title' in tab and 'paramStr' in tab:
                    titles.append(tab['title'])
                    param_strs.append(tab['paramStr'])

    # 收集商品信息
    items = dict()
    print('开始收集商品信息...')
    for i in range(0, len(param_strs)):
        page_size = 20 # 每次获取 20 个商品
        max_lottery_pages = 5 # 每个分类获取 5 页数据

        for page in range(1, max_lottery_pages + 1):
            print('正在获取分类', titles[i], '下第', page, '/', max_lottery_pages, '页商品信息,已获取到', len(items), '件商品信息...')

            # mall_list = alipay_mobile_aggrbillinfo_mall_list(s, page, page_size, param_strs[i], 0)
            mall_list = alipay_mobile_aggrbillinfo_mall_list(s, page, page_size, param_strs[i], random.randint(0, 300))
            if mall_list is None:
                break
 # 商品类型,可以修改 sign_list['cateConfs'] 实现只对某些类型的商品进行抽奖
        sign_list = alipay_mobile_aggrbillinfo_user_sign_list(s)
        if 'cateConfs' in sign_list:
            # 开始抽奖
            lottery_times = 0
            while lottery_times < max_lottery_times:
                # 准备足够羊毛并获取羊毛信息
                available_quota, limit_quota = prepare_wool(s)

                # 收取羊毛、使用卡片之后仍不足以符合抽奖需求
                if item_list is None or len(item_list) <= 0:
                    if available_quota < limit_quota:
                        print('可用羊毛只有', available_quota, '不够抽奖,请过段时间再来...')
                        break
                elif available_quota < item_list[0]['salePrice']:
                    print('可用羊毛只有', available_quota, '不够抽奖,请过段时间再来...')
                    break

                depth = 0
                retried = False
                while True:
                    item = None

                    # 获取商品列表
                    if item_list is None or len(item_list) <= 0:
                        item_list = collect_lottery_items_info(s, sign_list['cateConfs'], limit_quota, depth)
                        if len(item_list) < 100:
                            depth += 1
                            max_lottery_times += 100

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-4-5 17:11

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表