import json def parse_kpl_datas(results): start_y = -1 end_x = -1 index = 0 datas = [] for result in results: text = result[1] if text.find("股票名称") > -1: start_y = result[0][0][1] if text.find("竞价涨幅") > -1: end_x = result[0][0][0] if start_y > 0 and end_x > 0: if result[0][0][0] < end_x and result[0][0][1] > start_y and (result[0][1][0] - result[0][0][0]) > 30: datas.append(text) index += 1 datas = datas[:3 * 5] fdatas = [] temp = [] for data in datas: temp.append(data) if len(temp) == 3: fdatas.append((temp[2][:6], temp[1])) temp = [] return fdatas # 涨停代码: # (代码,名称,首次涨停时间,最近涨停时间,几板,涨停原因,板块,实际流通,主力净额) # (0,1,6,25,9,16,11,15,12) # 竞价代码: # (代码,名称,涨停委买额,板块,竞价成交额,实际流通) # (0,1,18,11,22,15) # 炸板: # (代码,名称,涨幅,板块,实际流通) # (0,1,4,11,15) # 跌停: # (代码,名称,板块,实际流通) # (0,1,11,15) # 曾跌停: # (代码,名称,涨幅,板块,实际流通) # (0,1,4,11,15) TYPE_BIDDING = 8 TYPE_LIMIT_UP = 1 TYPE_OPEN_LIMIT_UP = 2 TYPE_LIMIT_DOWN = 3 TYPE_EVER_LIMIT_DOWN = 5 def __parseItemData(data, type): if type == TYPE_BIDDING: return data[0], data[1], data[18], data[11], data[22], data[15] elif type == TYPE_LIMIT_UP: return data[0], data[1], data[6], data[25], data[9], data[16], data[11], data[15], data[12] elif type == TYPE_OPEN_LIMIT_UP: return data[0], data[1], data[4], data[11], data[15] elif type == TYPE_LIMIT_DOWN: return data[0], data[1], data[11], data[15] elif type == TYPE_EVER_LIMIT_DOWN: return data[0], data[1], data[4], data[11], data[15] return None def parseData(data, type): data = json.loads(data) if data["errcode"] != 0: raise Exception(f"解析数据出错,errcode:{data['errcode']}") list_ = data["list"] fresult_ = [] for d in list_: pdata = __parseItemData(d, type) if pdata: fresult_ .append(pdata) return fresult_