import json import requests from spiders.hengbang.guishu.hb_config import * token='' headerss='' def check_login(): username = 'SXXN000010' global token token = str(redis_conn.hget('hengbang_' + username, 'token'), 'utf8') if token == '': token = '用户名、密码错误' else: global headerss headerss = { "Content-Type": "application/json;charset=UTF-8", 'Authorization': token, 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36' } params = { 'proposalno': '', 'licenseno': '', 'carowner': '', 'insuredcname': '', 'insrntcname': '', 'apptime': '', 'creator': username, 'pageNo': '0', 'pageSize': '8', } response = requests.get('https://car.hbins.com.cn/new-insure/api/carInsureMain/list', params=params, headers=headerss) if '登录失效' in response.text: get_userinfo(username) check_login() def get_carinfo(x): vin =x url = "https://car.hbins.com.cn/new-insure/api/carinsurenew/renewinsurance" params = { "licenseNo": "", "frameno": vin, "companyCode": "0107050301" } response = requests.get(url, headers=headerss, params=params) if response.json().get('carMappings'): carMappings = response.json().get('carMappings').get('cbitData') url = "https://car.hbins.com.cn/backstage/api/car-model/queryByCarMapping" data = { "cbitData": carMappings, "pageNo": 0, "pageSize": 50, } data = json.dumps(data) response = requests.post(url, headers=headerss, data=data) if response.json().get('content'): content=[] for i in response.json().get('content'): if i.get('exhaustScale'): displacement = str(int(i.get('exhaustScale')) / 1000) else: displacement = '' content.append( { "modelCode": i.get('modelCode'), "modelName": i.get('modelCName'), "brandCN": i.get('carBrand'), "series": i.get('familyName'), "importFlag": i.get('vehicleClass'), "ratedPassengerCapacity": i.get('seatCount'), "displacement": displacement, "marketYear": i.get('carYear'), "replacementValue": i.get('purchasePriceNotTax'), "vehicleDescription": i.get('remark'), "refCode1": '', "refCode2": '', "gearboxType": i.get('transmissiontType'), "remark": i.get('remark'), "fuelType": "", "fuelTypeCode": i.get('energyType') if i.get('energyType') else '0', "energyTypes": i.get('energyType') if i.get('energyType') else '0', "wholeWeight": '', "powerScale": i.get('power'), "vehicleJingyo": '', "vehicleSeatMax": "0", "vehicleSeatMin": "0" } ) return { 'code':200, 'content':content } else: return { 'code':400, 'content':[] } else: return { 'code': 400, 'content': [] } def main(x): check_login() if token!='用户名、密码错误': return get_carinfo(x) else: return { 'code': 400, 'message':'用户名、密码错误' } if __name__ == '__main__': aa=main('LVVDC11B79D223498') print(aa.get('content'))