import time import requests import execjs from spiders.pingan.Login.pa_login import pinganlogin from config import * class PA_xubao(object): def __init__(self,uname,pwd,vin): self.uname=uname self.pwd=pwd self.vin=vin cookie=pinganlogin('DHJWA-87743', 'TIANqin2022').main() self.cookies = { 'USER_REDIS_COOKIE': cookie } self.headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', 'Content-Type':'application/json;charset=UTF-8', } def get_sign(self): with open(js_path+'pingan/sign.js', 'r') as f: jscode = f.read() sign = execjs.compile(jscode).call('get_sign', '') return sign def get_info(self): sign=self.get_sign() json_data = { 'departmentCode': '23388', 'employeeCode': '2330004379', 'agentCode': '33760031', 'brokerCode': '', 'secondLevelDepartmentCode': '233', 'abroadCommercialFlag': False, 'containQtAndApply': '0', 'vehicleFrameNo': self.vin, 'timeStamp': sign[2], 'nonce': sign[0], 'sign': sign[1], } response = requests.post('https://icorepnbs.pingan.com.cn/icore_pnbs/do/quote/quickSearchx9m24g',cookies=self.cookies,headers=self.headers,json=json_data,) if response.json().get('policy'): for i in response.json().get('policy'): # print(i) if i.get('planCode')=='PL0100003': pl0100003PolicyNo=i.get('policyNo') pl0100003ApplyPolicyNo = i.get('applyPolicyNo') elif i.get('planCode')=='PL0100C51': pl0100c51PolicyNo = i.get('policyNo') pl0100c51ApplyPolicyNo = i.get('applyPolicyNo') sign1 = self.get_sign() json_data = { 'departmentCode': '23388', 'secondLevelDepartmentCode': '233', 'saleAgentCode': '2330004379', 'businessSourceCode': '2', 'businessSourceDetailCode': '3', 'channelSourceCode': '9', 'channelSourceDetailCode': 'V', 'productCode': '', 'bidFlag': '0', 'planCode': 'PL0100003', 'usageAttributeCode': '02', 'ownershipAttributeCode': '03', 'isSelectDriver': 0, 'insuredNumber': 1, 'voucherType': '1', 'isFromCNBS': '0', 'nbaHotshot': 'nbaHotshot', 'personnelFlag': '1', 'pl0100003PolicyNo': pl0100003PolicyNo, 'pl0100003ApplyPolicyNo': pl0100003ApplyPolicyNo, 'pl0100c51PolicyNo': pl0100c51PolicyNo, 'pl0100c51ApplyPolicyNo': pl0100c51ApplyPolicyNo, 'rateClassFlag': '20', 'insuranceType': '1', 'timeStamp': sign1[2], 'nonce': sign1[0], 'sign': sign1[1], } response = requests.post('https://icorepnbs.pingan.com.cn/icore_pnbs/do/app/quotation/quickSearchVoucher', cookies=self.cookies, headers=self.headers, json=json_data, ) # print(111,response.text) kind_list=[] riskList=[] jq_endday=response.json().get('voucher').get('c51BaseInfo') sy_endday=response.json().get('voucher').get('c01BaseInfo') syxlist=response.json().get('voucher').get('c01DutyList') jqxlist=response.json().get('voucher').get('c51DutyList') if syxlist: for i in syxlist: name=i.get('dutyName') Amount=i.get('insuredAmount') if name=='机动车损失保险': code='A' elif name=='机动车第三者责任保险': code='B' elif name=='机动车车上人员责任保险(司机)': code='D3' elif name=='机动车车上人员责任保险(乘客)': code='D4' kind_list.append({ "amount": Amount, "kindCode": code, "kindName": name }) if jqxlist: riskList.append({ "amount": 200000, "kindCode": "0507", 'startDate':jq_endday.get('insuranceBeginTime'), 'endDate': jq_endday.get('insuranceEndTime'), }) if kind_list: riskList.append({ "kindCode": "0510", 'startDate': sy_endday.get('insuranceBeginTime'), 'endDate': sy_endday.get('insuranceEndTime'), }) return { 'code':200, 'kindList':kind_list, 'riskList':riskList, } else: return { 'code':400, 'message':'暂无续保信息' } def main(self): return self.get_info() if __name__ == '__main__': pa_xb=PA_xubao('DHJWA-87743', 'TIANqin2022','JTJBAMCA0K2083676') aa=pa_xb.main() print(aa)