wangqiu.py 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. # -*- coding: utf-8 -*-
  2. # -*- coding: utf-8 -*-
  3. import copy
  4. import datetime
  5. import json
  6. import time
  7. import redis
  8. import scrapy
  9. from scrapy.http import Request
  10. from ..items import Wangqiu
  11. from ..settings import R_HOST, R_PASSWORD, R_POST, R_DB
  12. class LanqiuSpider(scrapy.Spider):
  13. name = "wangqiu"
  14. to_day = datetime.datetime.now()
  15. allowed_domains = ['hg3535z.com']
  16. custom_settings = {
  17. "ITEM_PIPELINES": {
  18. "hg3535.pipeline.wangqiu.Wangqiupipeline": 300,
  19. },
  20. # 'LOG_LEVEL': 'DEBUG',
  21. # 'LOG_FILE': "../hg3535/log/wangqiu_{}_{}_{}.log".format(to_day.year, to_day.month, to_day.day)
  22. }
  23. # rls = redis.Redis(host=R_HOST, port=R_POST, db=R_DB, password=R_PASSWORD)
  24. def start_requests(self):
  25. for y in range(1, 4):
  26. url = 'https://odata.yonghuai5515.com/odds6i/d/getodds/zh-cn/sid/3/pt/{}/ubt/am/pn/0/sb/2/dc/null/pid/0'.format(y)
  27. yield scrapy.Request(url=url, callback=self.parse, meta={'pt': y}, dont_filter=True)
  28. def parse(self, response):
  29. if response.text:
  30. try:
  31. datas = json.loads(response.text).get('n-ot', "").get('egs', "")
  32. except:
  33. datas = ""
  34. try:
  35. pt = copy.copy(response.meta['pt'])
  36. except:
  37. pt = 0
  38. if datas:
  39. for result in datas:
  40. new_results = result['es']
  41. for new_result in new_results:
  42. game_id = new_result['i'][16]
  43. if pt == 1:
  44. url = "https://odata.yonghuai5515.com/odds6i/d/getamodds/zh-cn/eid/{}/iip/false/ubt/am/isp/false".format(game_id)
  45. yield Request(url=url, callback=self.parse_each, meta={'pt': pt}, dont_filter=True)
  46. if pt == 2:
  47. url = "https://odata.yonghuai5515.com/odds6i/d/getamodds/zh-cn/eid/{}/iip/false/ubt/am/isp/false".format(game_id)
  48. yield Request(url=url, callback=self.parse_each, meta={'pt': pt}, dont_filter=True)
  49. if pt == 3:
  50. url = "https://odata.yonghuai5515.com/odds6i/d/getamodds/zh-cn/eid/{}/iip/false/ubt/am/isp/true".format(game_id)
  51. yield Request(url=url, callback=self.parse_each, meta={'pt': pt}, dont_filter=True)
  52. def parse_each(self, response):
  53. try:
  54. new_datas = json.loads(response.text)['eg']
  55. pt = response.meta['pt']
  56. wangqiu = json.loads(response.text)['i'][31]
  57. except:
  58. new_datas = ""
  59. pt = 0
  60. wangqiu = ""
  61. if new_datas:
  62. # 联赛id
  63. league_id = new_datas["c"]["k"]
  64. # 联赛名
  65. league_name = new_datas["c"]["n"]
  66. new_data = new_datas["es"]
  67. for result in new_data:
  68. item = Wangqiu()
  69. # 比赛id
  70. game_id = str(result['k'])
  71. # 球队1
  72. team_home = result['i'][0]
  73. # 球队2
  74. team_guest = result['i'][1]
  75. # 数量(97>)
  76. number = result['i'][2]
  77. # 比赛状态
  78. zhuangtai = result['i'][3]
  79. # 日期
  80. data_game = result['i'][4]
  81. # 开赛时间
  82. time_game = result['i'][5]
  83. # 队1分数
  84. score_home1 = result['i'][10]
  85. # 队2分数
  86. score_guest1 = result['i'][11]
  87. # 第几盘
  88. jijie = result['i'][12]
  89. # 球队得分
  90. qiudui = result['pci'].get('ctn', "")
  91. # --------------------------------------------------让盘分割线-----------------------------------------------------------
  92. concedes_dict = {}
  93. concedes_dict_rule = {}
  94. try:
  95. concedes = result['o']["ah"]["v"]
  96. concedes_dict_rule['ldh'] = concedes[1] # 主队
  97. concedes_dict_rule['ldg'] = concedes[3] # 客队
  98. if pt is 3:
  99. concedes_dict['ldh'] = float(concedes[5]) - 1
  100. concedes_dict['ldg'] = float(concedes[7]) - 1
  101. else:
  102. concedes_dict['ldg'] = concedes[7]
  103. concedes_dict['ldh'] = float(concedes[5])
  104. except:
  105. concedes_dict_rule['ldh'] = ""
  106. concedes_dict['ldh'] = ""
  107. concedes_dict_rule['ldg'] = ""
  108. concedes_dict['ldg'] = ""
  109. # ---------------------------------------------------冠军----------------------------------------------------------------
  110. kemps_dict = {}
  111. try:
  112. kemps = result['o']["ml"]["v"]
  113. kemps_dict['ch'] = kemps[1] # 主队
  114. kemps_dict['cg'] = kemps[3] # 客队
  115. except:
  116. kemps_dict['ch'] = ""
  117. kemps_dict['cg'] = ""
  118. # 第一盘 冠军
  119. try:
  120. kemps = result['o']["mls1"]["v"]
  121. kemps_dict['ch_1'] = kemps[1]
  122. kemps_dict['cg_1'] = kemps[3]
  123. except:
  124. kemps_dict['ch_1'] = ""
  125. kemps_dict['cg_1'] = ""
  126. # ---------------------------------------------------让局---------------------------------------------------------------
  127. bureaus_dict = {}
  128. bureaus_dict_rule = {}
  129. try:
  130. bureaus = result['o']["ahfts"]["v"]
  131. bureaus_dict_rule['lbh'] = bureaus[1] # 主队
  132. bureaus_dict_rule['lbg'] = bureaus[3] # 客队
  133. if pt is 3:
  134. bureaus_dict['lbh'] = float(bureaus[5]) - 1
  135. bureaus_dict['lbg'] = float(bureaus[7]) - 1
  136. else:
  137. bureaus_dict['lbh'] = bureaus[5]
  138. bureaus_dict['lbg'] = bureaus[7]
  139. except:
  140. bureaus_dict_rule['lbh'] = ""
  141. bureaus_dict['lbh'] = ""
  142. bureaus_dict_rule['lbg'] = ""
  143. bureaus_dict['lbg'] = ""
  144. # -----------------------------------------------------总局数:大/小------------------------------------------------------
  145. # 总局数大小第一盘 未采集
  146. total_number_dict = {}
  147. total_number_dict_rule = {}
  148. try:
  149. total_numbers = result['o']["oufts"]["v"]
  150. total_number_dict_rule['tnb'] = total_numbers[1]
  151. total_number_dict_rule['tns'] = total_numbers[3]
  152. if pt is 3:
  153. total_number_dict['tnb'] = float(total_numbers[5]) - 1
  154. total_number_dict['tns'] = float(total_numbers[7]) - 1
  155. else:
  156. total_number_dict['tnb'] = total_numbers[5]
  157. total_number_dict['tns'] = total_numbers[7]
  158. except:
  159. total_number_dict_rule['tnb'] = ""
  160. total_number_dict['tnb'] = ""
  161. total_number_dict_rule['tns'] = ""
  162. total_number_dict['tns'] = ""
  163. # 第一节盘
  164. try:
  165. one_total_sizes = result['o']["ous1"]["v"]
  166. total_number_dict_rule["tnb_1"] = one_total_sizes[1]
  167. total_number_dict["tnb_1"] = one_total_sizes[5]
  168. total_number_dict_rule["tns_1"] = one_total_sizes[3]
  169. total_number_dict["tns_1"] = one_total_sizes[7]
  170. if pt is 3:
  171. total_number_dict['tnb_1'] = float(one_total_sizes[5]) - 1
  172. total_number_dict['tns_1'] = float(one_total_sizes[7]) - 1
  173. else:
  174. total_number_dict['tnb_1'] = one_total_sizes[5]
  175. total_number_dict['tns_1'] = one_total_sizes[7]
  176. except:
  177. total_number_dict_rule["tnb_1"] = ""
  178. total_number_dict["tnb_1"] = ""
  179. total_number_dict_rule["tns_1"] = ""
  180. total_number_dict["tns_1"] = ""
  181. # ------------------------------------------------------总局数:单/双-----------------------------------------------------
  182. odd_evens_dict = {}
  183. odd_evens_dict_rule = {}
  184. try:
  185. odd_evens = result['o']["oefts"]["v"]
  186. # 上半场 主队让球条件
  187. odd_evens_dict['tss'] = odd_evens[1]
  188. odd_evens_dict_rule['tss'] = "单"
  189. odd_evens_dict['tsb'] = odd_evens[3]
  190. odd_evens_dict_rule['tsb'] = "双"
  191. except:
  192. odd_evens_dict['tss'] = ""
  193. odd_evens_dict['tsb'] = ""
  194. odd_evens_dict_rule['tss'] = ""
  195. odd_evens_dict_rule['tsb'] = ""
  196. # 联赛id
  197. item['league_id'] = league_id
  198. # 联赛名
  199. item['league_name'] = league_name
  200. # 比赛id
  201. item['game_id'] = game_id
  202. # 球队1
  203. item['team_home'] = team_home
  204. # 球队2
  205. item['team_guest'] = team_guest
  206. # 数量(97>)
  207. item['number'] = number
  208. # 比赛状态
  209. item['zhuangtai'] = zhuangtai
  210. # 日期
  211. item['data_game'] = data_game
  212. # 开赛时间
  213. item['time_game'] = time_game
  214. # 队1分数
  215. item['score_home'] = score_home1
  216. # 队2分数
  217. item['score_guest'] = score_guest1
  218. # 第几节
  219. item['jijie'] = jijie
  220. item['pt'] = pt
  221. # 球队得分
  222. item['qiudui'] = qiudui
  223. # 让盘
  224. item['concedes_dict'] = concedes_dict
  225. item['concedes_dict_rule'] = concedes_dict_rule
  226. # 冠军
  227. item['kemps_dict'] = kemps_dict
  228. # 让局
  229. item['bureaus_dict'] = bureaus_dict
  230. item['bureaus_dict_rule'] = bureaus_dict_rule
  231. # 总局数大小
  232. item['total_number_dict'] = total_number_dict
  233. item['total_number_dict_rule'] = total_number_dict_rule
  234. # 总局数单双
  235. item['odd_evens_dict'] = odd_evens_dict
  236. item['odd_evens_dict_rule'] = odd_evens_dict_rule
  237. item['wangqiu'] = wangqiu
  238. yield item