递归获取市场分类

import requests,json
import pandas as pd

qq = requests.get("某网站接口")
qq.encoding = "gbk"

def QhFindCode(QhList):
    """
    获取分类代码
    作者:阙辉
    
    """
    QhFlag = False  # 记录当前是否是列表 
    QhFlag01 = False # 转记录当前上一个是否是列表 
    if isinstance(QhList[1],list):  # 判断第二个是不是列表,是的话则不是末级
        for Qhi,QhRow in enumerate(QhList):
            if isinstance(QhRow,list):  # 判断当前是否为列表
                QhFlag = True
            else:
                QhFlag = False
            if QhFlag01 == True and QhFlag==False:  # 如果当前是非列表 上一个是列表 则说明
                QhCode = QhList[Qhi+1]
            QhFlag01 = QhFlag  # 转存当前是不是列表
        QhIsList = True  # 判断第二个是不是列表,是的话则说明还有下级
    else:
        QhCode = QhList[2]  # 如果是末级 默认第三个是代码
        QhIsList = False
    QhCodeZ = QhList[-1].replace(' ',"")
    # if "hs_bjs" in  QhCodeZ:print(QhCodeZ)
    if "{node:'" in QhCodeZ:
        QhCode = QhCodeZ.replace(' ',"").split("{node:'")[1].split("',")[0].replace("'}","")
        print(QhCodeZ)
        print(QhCode)
    return QhCode,QhIsList

def QhFindXiaJiMenu(QhBanKuaiXia,QhBanKuai):
    """
    获取下层分类
    作者:阙辉
    """

    QhBanKuaiXia02 = []  # 下层分类列表初始化
    for QhRow in QhBanKuaiXia:  # 循环下层
        QhShangName = QhRow["QhName"]
        QhShangCode = QhRow["QhCode"]
        QhShangcount = QhRow["QhNumber"]
        QhXiaListRow = QhRow["QhXiaJiList"] 
        # print(QhShangName,QhShangCode,QhShangcount)
        # print(str(QhXiaListRow)[:1000])
        for QhRow01 in QhXiaListRow:
            QhBanKuaiRow = []  # 分类行列表初始化
            QhXiaYiDic = {}    # 下层字典初始化
            QhName = QhRow01[0]  # 分类名
            if "</" in QhName: QhName = QhName.split('>')[1].split("</")[0]
            QhCode,QhIsList = QhFindCode(QhRow01)
            QhBanKuaiRow.append(QhName)
            QhBanKuaiRow.append(QhCode)
            QhBanKuaiRow.append(QhShangCode)
            QhBanKuaiRow.append(QhShangcount+1)
            QhXiaYiDic["QhName"] = QhName
            QhXiaYiDic["QhCode"] = QhCode
            QhXiaYiDic["QhNumber"] = QhShangcount+1
            QhBanKuai.append(QhBanKuaiRow)
            if QhIsList:
                QhXiaYiDic["QhXiaJiList"] = QhRow01[1]
                QhBanKuaiXia02.append(QhXiaYiDic)
    return QhBanKuaiXia02,QhBanKuai


qqjson = json.loads(qq.text)


QhBanKuai = []   # 总列表初始化 名称 代码 上级代码 级数
# 第一层
QhBanKuaiRow = []  # 当前列表
QhBanKuaiXia = []  # 下一层记录列表
QhXiaYiDic = {}    # 下一层字典化
QhName = qqjson[0]
if "</" in QhName: QhName = QhName.split('>')[1].split("</")[0]
QhCode,QhIsList = QhFindCode(qqjson)
QhBanKuaiRow.append(QhName)
QhBanKuaiRow.append(QhCode)
QhBanKuaiRow.append("")
QhBanKuaiRow.append(0)
QhXiaYiDic["QhName"] = QhName
QhXiaYiDic["QhCode"] = QhCode
QhXiaYiDic["QhNumber"] = 0
QhBanKuai.append(QhBanKuaiRow)

if QhIsList:
    QhXiaYiDic["QhXiaJiList"] = qqjson[1]
    QhBanKuaiXia.append(QhXiaYiDic)

QhFlag = True
while QhFlag:
    # 递归完美解决
    QhBanKuaiXia,QhBanKuai = QhFindXiaJiMenu(QhBanKuaiXia,QhBanKuai)
    if len(QhBanKuaiXia) == 0:QhFlag = False

aa=pd.DataFrame(QhBanKuai,columns=["名称","代码","上级代码","级数"])
aa.to_csv("新浪.csv",encoding='gbk')
# # 第二层
# QhBanKuaiXia02 = []
# for QhRow in QhBanKuaiXia:
#     QhShangName = QhRow["QhName"]
#     QhShangCode = QhRow["QhCode"]
#     QhShangcount = QhRow["QhNumber"]
#     QhXiaListRow = QhRow["QhXiaJiList"] 
#     print(QhShangName,QhShangCode,QhShangcount)
#     print(str(QhXiaListRow)[:1000])
#     for i,QhRow01 in enumerate(QhXiaListRow):
#         QhBanKuaiRow = []
#         print(i)
#         QhXiaYiDic = {}
#         QhName = QhRow01[0]
#         QhCode,QhIsList = QhFindCode(QhRow01)
#         QhBanKuaiRow.append(QhName)
#         QhBanKuaiRow.append(QhCode)
#         QhBanKuaiRow.append(QhShangCode)
#         QhBanKuaiRow.append(QhShangcount+1)
#         QhXiaYiDic["QhName"] = QhName
#         QhXiaYiDic["QhCode"] = QhCode
#         QhXiaYiDic["QhNumber"] = QhShangcount+1
#         QhBanKuai.append(QhBanKuaiRow)

#         QhBanKuai0001=[]
#         if QhIsList:
#             for QhRow in QhRow01:
#                 if isinstance(QhRow,list):
#                     QhXiaYiDic["QhXiaJiList"] = QhRow
#             QhBanKuaiXia02.append(QhXiaYiDic)

# # 第三层
# QhBanKuaiXia03 = []
# for QhRow in QhBanKuaiXia02:
#     QhShangName = QhRow["QhName"]
#     QhShangCode = QhRow["QhCode"]
#     QhShangcount = QhRow["QhNumber"]
#     QhXiaListRow = QhRow["QhXiaJiList"] 
#     print(QhShangName,QhShangCode,QhShangcount)
#     print(str(QhXiaListRow)[:1000])
#     for i,QhRow01 in enumerate(QhXiaListRow):
#         QhBanKuaiRow = []
#         print(i)
#         QhXiaYiDic = {}
#         QhName = QhRow01[0]
#         QhCode,QhIsList = QhFindCode(QhRow01)
#         QhBanKuaiRow.append(QhName)
#         QhBanKuaiRow.append(QhCode)
#         QhBanKuaiRow.append(QhShangCode)
#         QhBanKuaiRow.append(QhShangcount+1)
#         QhXiaYiDic["QhName"] = QhName
#         QhXiaYiDic["QhCode"] = QhCode
#         QhXiaYiDic["QhNumber"] = QhShangcount+1
#         QhBanKuai.append(QhBanKuaiRow)

#         QhBanKuai0001=[]
#         if QhIsList:
#             for QhRow in QhRow01:
#                 if isinstance(QhRow,list):
#                     QhXiaYiDic["QhXiaJiList"] = QhRow
#             QhBanKuaiXia03.append(QhXiaYiDic)

# # 第四层
# QhBanKuaiXia04 = []
# for QhRow in QhBanKuaiXia03:
#     QhShangName = QhRow["QhName"]
#     QhShangCode = QhRow["QhCode"]
#     QhShangcount = QhRow["QhNumber"]
#     QhXiaListRow = QhRow["QhXiaJiList"] 
#     print(QhShangName,QhShangCode,QhShangcount)
#     print(str(QhXiaListRow)[:1000])
#     for i,QhRow01 in enumerate(QhXiaListRow):
#         QhBanKuaiRow = []
#         print(i)
#         QhXiaYiDic = {}
#         QhName = QhRow01[0]
#         QhCode,QhIsList = QhFindCode(QhRow01)
#         QhBanKuaiRow.append(QhName)
#         QhBanKuaiRow.append(QhCode)
#         QhBanKuaiRow.append(QhShangCode)
#         QhBanKuaiRow.append(QhShangcount+1)
#         QhXiaYiDic["QhName"] = QhName
#         QhXiaYiDic["QhCode"] = QhCode
#         QhXiaYiDic["QhNumber"] = QhShangcount+1
#         QhBanKuai.append(QhBanKuaiRow)

#         QhBanKuai0001=[]
#         if QhIsList:
#             for QhRow in QhRow01:
#                 if isinstance(QhRow,list):
#                     QhXiaYiDic["QhXiaJiList"] = QhRow
#             QhBanKuaiXia04.append(QhXiaYiDic)
# # 第五层
# QhBanKuaiXia05 = []
# for QhRow in QhBanKuaiXia04:
#     QhShangName = QhRow["QhName"]
#     QhShangCode = QhRow["QhCode"]
#     QhShangcount = QhRow["QhNumber"]
#     QhXiaListRow = QhRow["QhXiaJiList"] 
#     print(QhShangName,QhShangCode,QhShangcount)
#     print(str(QhXiaListRow)[:1000])
#     for i,QhRow01 in enumerate(QhXiaListRow):
#         QhBanKuaiRow = []
#         print(i)
#         QhXiaYiDic = {}
#         QhName = QhRow01[0]
#         QhCode,QhIsList = QhFindCode(QhRow01)
#         QhBanKuaiRow.append(QhName)
#         QhBanKuaiRow.append(QhCode)
#         QhBanKuaiRow.append(QhShangCode)
#         QhBanKuaiRow.append(QhShangcount+1)
#         QhXiaYiDic["QhName"] = QhName
#         QhXiaYiDic["QhCode"] = QhCode
#         QhXiaYiDic["QhNumber"] = QhShangcount+1
#         QhBanKuai.append(QhBanKuaiRow)

#         QhBanKuai0001=[]
#         if QhIsList:
#             for QhRow in QhRow01:
#                 if isinstance(QhRow,list):
#                     QhXiaYiDic["QhXiaJiList"] = QhRow
#             QhBanKuaiXia05.append(QhXiaYiDic)


# # 第六层
# QhBanKuaiXia06 = []
# for QhRow in QhBanKuaiXia05:
#     QhShangName = QhRow["QhName"]
#     QhShangCode = QhRow["QhCode"]
#     QhShangcount = QhRow["QhNumber"]
#     QhXiaListRow = QhRow["QhXiaJiList"] 
#     print(QhShangName,QhShangCode,QhShangcount)
#     print(str(QhXiaListRow)[:1000])
#     for i,QhRow01 in enumerate(QhXiaListRow):
#         QhBanKuaiRow = []
#         print(i)
#         QhXiaYiDic = {}
#         QhName = QhRow01[0]
#         QhCode,QhIsList = QhFindCode(QhRow01)
#         QhBanKuaiRow.append(QhName)
#         QhBanKuaiRow.append(QhCode)
#         QhBanKuaiRow.append(QhShangCode)
#         QhBanKuaiRow.append(QhShangcount+1)
#         QhXiaYiDic["QhName"] = QhName
#         QhXiaYiDic["QhCode"] = QhCode
#         QhXiaYiDic["QhNumber"] = QhShangcount+1
#         QhBanKuai.append(QhBanKuaiRow)

#         QhBanKuai0001=[]
#         if QhIsList:
#             for QhRow in QhRow01:
#                 if isinstance(QhRow,list):
#                     QhXiaYiDic["QhXiaJiList"] = QhRow
#             QhBanKuaiXia06.append(QhXiaYiDic)

# for QhRow99 in QhBanKuai01:
#     QhShangName = QhRow99[0]
#     QhShangCode = QhRow99[1]
#     QhShangcount = QhRow99[-1]
#     print(QhShangName,QhShangCode,QhShangcount)
#     for i,QhRow in enumerate(QhRow99):
        
#         for i01,QhRow01 in enumerate(QhRow):
#             print(i01)


    # QhBanKuai0001 = []
    # QhBanKuaiRow = []
    # # for i in range(1,6):
    # QhName = QhRow[0]
    # QhCode,QhIsList = QhFindCode(QhRow)
    # QhBanKuaiRow.append(QhName)
    # QhBanKuaiRow.append(QhCode)
    # QhBanKuaiRow.append("")
    # QhBanKuaiRow.append(0)
    # QhBanKuai01.append(QhBanKuaiRow)
    # QhBanKuai.append(QhBanKuaiRow)
    # print(QhBanKuai)
    # if QhIsList:
    #     for QhRow01 in QhRow:
    #         QhBanKuai0001 = []
    #         if isinstance(QhRow01,list):
    #             QhBanKuai0001.append(QhRow01)  
    
    # QhBanKuai01.append(QhBanKuai0001)  


# print(QhBanKuai)
# print(QhBanKuaiXia05)
# print(len(QhBanKuai01))

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值