hb_vinserach.py 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. import json
  2. import requests
  3. from spiders.hengbang.guishu.hb_config import *
  4. token=''
  5. headerss=''
  6. def check_login():
  7. username = 'SXXN000010'
  8. global token
  9. token = str(redis_conn.hget('hengbang_' + username, 'token'), 'utf8')
  10. if token == '':
  11. token = '用户名、密码错误'
  12. else:
  13. global headerss
  14. headerss = {
  15. "Content-Type": "application/json;charset=UTF-8",
  16. 'Authorization': token,
  17. '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'
  18. }
  19. params = {
  20. 'proposalno': '',
  21. 'licenseno': '',
  22. 'carowner': '',
  23. 'insuredcname': '',
  24. 'insrntcname': '',
  25. 'apptime': '',
  26. 'creator': username,
  27. 'pageNo': '0',
  28. 'pageSize': '8',
  29. }
  30. response = requests.get('https://car.hbins.com.cn/new-insure/api/carInsureMain/list', params=params,
  31. headers=headerss)
  32. if '登录失效' in response.text:
  33. get_userinfo(username)
  34. check_login()
  35. def get_carinfo(x):
  36. vin =x
  37. url = "https://car.hbins.com.cn/new-insure/api/carinsurenew/renewinsurance"
  38. params = {
  39. "licenseNo": "",
  40. "frameno": vin,
  41. "companyCode": "0107050301"
  42. }
  43. response = requests.get(url, headers=headerss, params=params)
  44. if response.json().get('carMappings'):
  45. carMappings = response.json().get('carMappings').get('cbitData')
  46. url = "https://car.hbins.com.cn/backstage/api/car-model/queryByCarMapping"
  47. data = {
  48. "cbitData": carMappings,
  49. "pageNo": 0,
  50. "pageSize": 50,
  51. }
  52. data = json.dumps(data)
  53. response = requests.post(url, headers=headerss, data=data)
  54. if response.json().get('content'):
  55. content=[]
  56. for i in response.json().get('content'):
  57. if i.get('exhaustScale'):
  58. displacement = str(int(i.get('exhaustScale')) / 1000)
  59. else:
  60. displacement = ''
  61. content.append(
  62. {
  63. "modelCode": i.get('modelCode'),
  64. "modelName": i.get('modelCName'),
  65. "brandCN": i.get('carBrand'),
  66. "series": i.get('familyName'),
  67. "importFlag": i.get('vehicleClass'),
  68. "ratedPassengerCapacity": i.get('seatCount'),
  69. "displacement": displacement,
  70. "marketYear": i.get('carYear'),
  71. "replacementValue": i.get('purchasePriceNotTax'),
  72. "vehicleDescription": i.get('remark'),
  73. "refCode1": '',
  74. "refCode2": '',
  75. "gearboxType": i.get('transmissiontType'),
  76. "remark": i.get('remark'),
  77. "fuelType": "",
  78. "fuelTypeCode": i.get('energyType') if i.get('energyType') else '0',
  79. "energyTypes": i.get('energyType') if i.get('energyType') else '0',
  80. "wholeWeight": '',
  81. "powerScale": i.get('power'),
  82. "vehicleJingyo": '',
  83. "vehicleSeatMax": "0",
  84. "vehicleSeatMin": "0"
  85. }
  86. )
  87. return {
  88. 'code':200,
  89. 'content':content
  90. }
  91. else:
  92. return {
  93. 'code':400,
  94. 'content':[]
  95. }
  96. else:
  97. return {
  98. 'code': 400,
  99. 'content': []
  100. }
  101. def main(x):
  102. check_login()
  103. if token!='用户名、密码错误':
  104. return get_carinfo(x)
  105. else:
  106. return {
  107. 'code': 400,
  108. 'message':'用户名、密码错误'
  109. }
  110. if __name__ == '__main__':
  111. aa=main('LVVDC11B79D223498')
  112. print(aa.get('content'))