wangqiu.py 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  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.jiushan6688.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. up_time = str(time.time()) + '&' + 'wq'
  44. self.rls.hset('hg3535.ball.ids', game_id, up_time)
  45. if pt == 1:
  46. url = "https://odata.jiushan6688.com/odds6i/d/getamodds/zh-cn/eid/{}/iip/false/ubt/am/isp/false".format(game_id)
  47. yield Request(url=url, callback=self.parse_each, meta={'pt': pt}, dont_filter=True)
  48. if pt == 2:
  49. url = "https://odata.jiushan6688.com/odds6i/d/getamodds/zh-cn/eid/{}/iip/false/ubt/am/isp/false".format(game_id)
  50. yield Request(url=url, callback=self.parse_each, meta={'pt': pt}, dont_filter=True)
  51. if pt == 3:
  52. url = "https://odata.jiushan6688.com/odds6i/d/getamodds/zh-cn/eid/{}/iip/false/ubt/am/isp/true".format(game_id)
  53. yield Request(url=url, callback=self.parse_each, meta={'pt': pt}, dont_filter=True)
  54. def parse_each(self, response):
  55. try:
  56. new_datas = json.loads(response.text)['eg']
  57. pt = response.meta['pt']
  58. wangqiu = json.loads(response.text)['i'][31]
  59. except:
  60. new_datas = ""
  61. pt = 0
  62. wangqiu = ""
  63. if new_datas:
  64. # 联赛id
  65. league_id = new_datas["c"]["k"]
  66. # 联赛名
  67. league_name = new_datas["c"]["n"]
  68. new_data = new_datas["es"]
  69. for result in new_data:
  70. item = Wangqiu()
  71. # 比赛id
  72. game_id = str(result['k'])
  73. # 球队1
  74. team_home = result['i'][0]
  75. # 球队2
  76. team_guest = result['i'][1]
  77. # 数量(97>)
  78. number = result['i'][2]
  79. # 比赛状态
  80. zhuangtai = result['i'][3]
  81. # 日期
  82. data_game = result['i'][4]
  83. # 开赛时间
  84. time_game = result['i'][5]
  85. # 队1分数
  86. score_home1 = result['i'][10]
  87. # 队2分数
  88. score_guest1 = result['i'][11]
  89. # 第几盘
  90. jijie = result['i'][12]
  91. # 球队得分
  92. qiudui = result['pci'].get('ctn', "")
  93. # --------------------------------------------------让盘分割线-----------------------------------------------------------
  94. concedes_dict = {}
  95. concedes_dict_rule = {}
  96. try:
  97. concedes = result['o']["ah"]["v"]
  98. concedes_dict_rule['ldh'] = concedes[1] # 主队
  99. concedes_dict_rule['ldg'] = concedes[3] # 客队
  100. if pt is 3:
  101. concedes_dict['ldh'] = float(concedes[5]) - 1
  102. concedes_dict['ldg'] = float(concedes[7]) - 1
  103. else:
  104. concedes_dict['ldg'] = concedes[7]
  105. concedes_dict['ldh'] = float(concedes[5])
  106. except:
  107. concedes_dict_rule['ldh'] = ""
  108. concedes_dict['ldh'] = ""
  109. concedes_dict_rule['ldg'] = ""
  110. concedes_dict['ldg'] = ""
  111. # ---------------------------------------------------冠军----------------------------------------------------------------
  112. kemps_dict = {}
  113. try:
  114. kemps = result['o']["ml"]["v"]
  115. kemps_dict['ch'] = kemps[1] # 主队
  116. kemps_dict['cg'] = kemps[3] # 客队
  117. except:
  118. kemps_dict['ch'] = ""
  119. kemps_dict['cg'] = ""
  120. # 第一盘 冠军
  121. try:
  122. kemps = result['o']["mls1"]["v"]
  123. kemps_dict['ch_1'] = kemps[1]
  124. kemps_dict['cg_1'] = kemps[3]
  125. except:
  126. kemps_dict['ch_1'] = ""
  127. kemps_dict['cg_1'] = ""
  128. # ---------------------------------------------------让局---------------------------------------------------------------
  129. bureaus_dict = {}
  130. bureaus_dict_rule = {}
  131. try:
  132. bureaus = result['o']["ahfts"]["v"]
  133. bureaus_dict_rule['lbh'] = bureaus[1] # 主队
  134. bureaus_dict_rule['lbg'] = bureaus[3] # 客队
  135. if pt is 3:
  136. bureaus_dict['lbh'] = float(bureaus[5]) - 1
  137. bureaus_dict['lbg'] = float(bureaus[7]) - 1
  138. else:
  139. bureaus_dict['lbh'] = bureaus[5]
  140. bureaus_dict['lbg'] = bureaus[7]
  141. except:
  142. bureaus_dict_rule['lbh'] = ""
  143. bureaus_dict['lbh'] = ""
  144. bureaus_dict_rule['lbg'] = ""
  145. bureaus_dict['lbg'] = ""
  146. # -----------------------------------------------------总局数:大/小------------------------------------------------------
  147. # 总局数大小第一盘 未采集
  148. total_number_dict = {}
  149. total_number_dict_rule = {}
  150. try:
  151. total_numbers = result['o']["oufts"]["v"]
  152. total_number_dict_rule['tnb'] = total_numbers[1]
  153. total_number_dict_rule['tns'] = total_numbers[3]
  154. if pt is 3:
  155. total_number_dict['tnb'] = float(total_numbers[5]) - 1
  156. total_number_dict['tns'] = float(total_numbers[7]) - 1
  157. else:
  158. total_number_dict['tnb'] = total_numbers[5]
  159. total_number_dict['tns'] = total_numbers[7]
  160. except:
  161. total_number_dict_rule['tnb'] = ""
  162. total_number_dict['tnb'] = ""
  163. total_number_dict_rule['tns'] = ""
  164. total_number_dict['tns'] = ""
  165. # 第一节盘
  166. try:
  167. one_total_sizes = result['o']["ous1"]["v"]
  168. total_number_dict_rule["tnb_1"] = one_total_sizes[1]
  169. total_number_dict["tnb_1"] = one_total_sizes[5]
  170. total_number_dict_rule["tns_1"] = one_total_sizes[3]
  171. total_number_dict["tns_1"] = one_total_sizes[7]
  172. if pt is 3:
  173. total_number_dict['tnb_1'] = float(one_total_sizes[5]) - 1
  174. total_number_dict['tns_1'] = float(one_total_sizes[7]) - 1
  175. else:
  176. total_number_dict['tnb_1'] = one_total_sizes[5]
  177. total_number_dict['tns_1'] = one_total_sizes[7]
  178. except:
  179. total_number_dict_rule["tnb_1"] = ""
  180. total_number_dict["tnb_1"] = ""
  181. total_number_dict_rule["tns_1"] = ""
  182. total_number_dict["tns_1"] = ""
  183. # ------------------------------------------------------总局数:单/双-----------------------------------------------------
  184. odd_evens_dict = {}
  185. odd_evens_dict_rule = {}
  186. try:
  187. odd_evens = result['o']["oefts"]["v"]
  188. # 上半场 主队让球条件
  189. odd_evens_dict['tss'] = odd_evens[1]
  190. odd_evens_dict_rule['tss'] = "单"
  191. odd_evens_dict['tsb'] = odd_evens[3]
  192. odd_evens_dict_rule['tsb'] = "双"
  193. except:
  194. odd_evens_dict['tss'] = ""
  195. odd_evens_dict['tsb'] = ""
  196. odd_evens_dict_rule['tss'] = ""
  197. odd_evens_dict_rule['tsb'] = ""
  198. # 联赛id
  199. item['league_id'] = league_id
  200. # 联赛名
  201. item['league_name'] = league_name
  202. # 比赛id
  203. item['game_id'] = game_id
  204. # 球队1
  205. item['team_home'] = team_home
  206. # 球队2
  207. item['team_guest'] = team_guest
  208. # 数量(97>)
  209. item['number'] = number
  210. # 比赛状态
  211. item['zhuangtai'] = zhuangtai
  212. # 日期
  213. item['data_game'] = data_game
  214. # 开赛时间
  215. item['time_game'] = time_game
  216. # 队1分数
  217. item['score_home'] = score_home1
  218. # 队2分数
  219. item['score_guest'] = score_guest1
  220. # 第几节
  221. item['jijie'] = jijie
  222. item['pt'] = pt
  223. # 球队得分
  224. item['qiudui'] = qiudui
  225. # 让盘
  226. item['concedes_dict'] = concedes_dict
  227. item['concedes_dict_rule'] = concedes_dict_rule
  228. # 冠军
  229. item['kemps_dict'] = kemps_dict
  230. # 让局
  231. item['bureaus_dict'] = bureaus_dict
  232. item['bureaus_dict_rule'] = bureaus_dict_rule
  233. # 总局数大小
  234. item['total_number_dict'] = total_number_dict
  235. item['total_number_dict_rule'] = total_number_dict_rule
  236. # 总局数单双
  237. item['odd_evens_dict'] = odd_evens_dict
  238. item['odd_evens_dict_rule'] = odd_evens_dict_rule
  239. item['wangqiu'] = wangqiu
  240. yield item