bangqiu.py 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. # -*- coding: utf-8 -*-
  2. import copy
  3. import datetime
  4. import json
  5. import scrapy
  6. from scrapy.http import Request
  7. from ..items import Bangqiu
  8. class BqrangqiuSpider(scrapy.Spider):
  9. name = 'bangqiu'
  10. to_day = datetime.datetime.now()
  11. allowed_domains = ['hg3535z.com']
  12. custom_settings = {
  13. "ITEM_PIPELINES": {
  14. "hg3535.pipelines.Bangqiupipeline": 300,
  15. },
  16. 'LOG_LEVEL': 'DEBUG',
  17. 'LOG_FILE': "../hg3535/log/bangqiu_{}_{}_{}.log".format(to_day.year, to_day.month, to_day.day)
  18. }
  19. def start_requests(self):
  20. for y in range(1, 4):
  21. url = 'https://hg3535z.com/odds2/d/getodds?sid=4&pt=' + str(y) + '&ubt=am&pn=0&sb=2&dc=null&pid=0'
  22. yield scrapy.Request(url=url, callback=self.parse, meta={'pt': y}, dont_filter=True)
  23. def parse(self, response):
  24. if response.text:
  25. try:
  26. datas = json.loads(response.text).get('n-ot', "").get('egs', "")
  27. except:
  28. datas = ""
  29. try:
  30. pt = copy.copy(response.meta['pt'])
  31. except:
  32. pt = 0
  33. if datas:
  34. for result in datas:
  35. new_results = result['es']
  36. for new_result in new_results:
  37. game_id = str(new_result['i'][16])
  38. if pt == 1:
  39. url = "https://hg3535z.com/odds2/d/getamodds?eid=" + game_id + "&iip=false&ubt=am&isp=false"
  40. yield Request(url=url, callback=self.parse_each, meta={'pt': pt}, dont_filter=True)
  41. if pt == 2:
  42. url = "https://hg3535z.com/odds2/d/getamodds?eid=" + game_id + "&iip=false&ubt=am&isp=false"
  43. yield Request(url=url, callback=self.parse_each, meta={'pt': pt}, dont_filter=True)
  44. if pt == 3:
  45. url = "https://hg3535z.com/odds2/d/getamodds?eid=" + game_id + "&iip=false&ubt=am&isp=true"
  46. yield Request(url=url, callback=self.parse_each, meta={'pt': pt}, dont_filter=True)
  47. def parse_each(self, response):
  48. # print('111111111111111111111111111111111111111111111111111111111')
  49. try:
  50. new_datas = json.loads(response.text)['eg']
  51. # print(new_datas)
  52. pt = response.meta['pt']
  53. # print(pt)
  54. bangqiu = json.loads(response.text)['i'][31]
  55. # print(bangqiu)
  56. except:
  57. new_datas = ""
  58. pt = 0
  59. bangqiu = ""
  60. # print(bangqiu)
  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. if result['pci']["ctid"] is 0:
  69. item = Bangqiu()
  70. # 比赛id
  71. game_id = str(result['k'])
  72. # 球队1
  73. team_home = result['i'][0]
  74. # 球队2
  75. team_guest = result['i'][1]
  76. # 数量(97>)
  77. number = result['i'][2]
  78. # 比赛状态
  79. zhuangtai = result['i'][3]
  80. # 日期
  81. data_game = result['i'][4]
  82. # 开赛时间
  83. time_game = result['i'][5]
  84. # 队1分数
  85. score_home1 = result['i'][10]
  86. # 队2分数
  87. score_guest1 = result['i'][11]
  88. # 第几盘
  89. jijie = result['i'][12]
  90. # 球队得分
  91. qiudui = result['pci'].get('ctn', "")
  92. # --------------------------------------------------让球分割线-----------------------------------------------------------
  93. concedes_dict = {}
  94. concedes_dict_rule = {}
  95. try:
  96. concedes = result['o']["ah"]["v"]
  97. concedes_dict_rule['concede_home'] = concedes[1]
  98. concedes_dict_rule['concede_guest'] = concedes[3]
  99. if pt is 3:
  100. concedes_dict['concede_home'] = float(concedes[5]) - 1
  101. concedes_dict['concede_guest'] = float(concedes[7]) - 1
  102. else:
  103. concedes_dict['concede_home'] = float(concedes[5])
  104. concedes_dict['concede_guest'] = float(concedes[7])
  105. except:
  106. concedes_dict_rule['concede_home'] = ""
  107. concedes_dict['concede_home'] = ""
  108. concedes_dict_rule['concede_guest'] = ""
  109. concedes_dict['concede_guest'] = ""
  110. # 让球 前5局-------------------------------------------------------------------------------------------------------------
  111. try:
  112. concedes = result['o']["ahf5in"]["v"]
  113. concedes_dict_rule['five_concede_home'] = concedes[1]
  114. concedes_dict_rule['five_concede_guest'] = concedes[3]
  115. if pt is 3:
  116. concedes_dict['five_concede_home'] = float(concedes[5]) - 1
  117. concedes_dict['five_concede_guest'] = float(concedes[7]) - 1
  118. else:
  119. concedes_dict['five_concede_home'] = concedes[5]
  120. concedes_dict['five_concede_guest'] = concedes[7]
  121. except:
  122. concedes_dict_rule['five_concede_home'] = ""
  123. concedes_dict['five_concede_home'] = ""
  124. concedes_dict_rule['five_concede_guest'] = ""
  125. concedes_dict['five_concede_guest'] = ""
  126. # ---------------------------------------------------独赢----------------------------------------------------------------
  127. capots_dict = {}
  128. try:
  129. capots = result['o']["ml"]["v"]
  130. capots_dict['capot_home'] = capots[1]
  131. capots_dict['capot_guest'] = capots[3]
  132. except:
  133. capots_dict['capot_home'] = ""
  134. capots_dict['capot_guest'] = ""
  135. # ---------------------------------------------------总得分:大/小--------------------------------------------------------
  136. total_size_dict = {}
  137. total_size_dict_rule = {}
  138. try:
  139. total_sizes = result['o']["ou"]["v"]
  140. total_size_dict_rule['total_size_big'] = total_sizes[1]
  141. total_size_dict_rule['total_size_small'] = total_sizes[3]
  142. if pt is 3:
  143. total_size_dict['total_size_big'] = float(total_sizes[5]) - 1
  144. total_size_dict['total_size_small'] = float(total_sizes[7]) - 1
  145. else:
  146. total_size_dict['total_size_big'] = total_sizes[5]
  147. total_size_dict['total_size_small'] = total_sizes[7]
  148. except:
  149. total_size_dict_rule['total_size_big'] = ""
  150. total_size_dict['total_size_big'] = ""
  151. total_size_dict_rule['total_size_small'] = ""
  152. total_size_dict['total_size_small'] = ""
  153. # 总得分: 大/小 前5局-----------------------------------------------------------------------------------------------------
  154. try:
  155. total_sizes = result['o']["ouf5in"]["v"]
  156. total_size_dict_rule['five_total_size_big'] = total_sizes[1]
  157. total_size_dict_rule['five_total_size_small'] = total_sizes[3]
  158. if pt is 3:
  159. total_size_dict['five_total_size_big'] = float(total_sizes[5]) - 1
  160. total_size_dict['five_total_size_small'] = float(total_sizes[7]) - 1
  161. else:
  162. total_size_dict['five_total_size_big'] = total_sizes[5]
  163. total_size_dict['five_total_size_small'] = total_sizes[7]
  164. except:
  165. total_size_dict_rule['five_total_size_big'] = ""
  166. total_size_dict['five_total_size_big'] = ""
  167. total_size_dict_rule['five_total_size_small'] = ""
  168. total_size_dict['five_total_size_small'] = ""
  169. # ------------------------------------------------------总得分:单/双-----------------------------------------------------
  170. odd_evens_dict = {}
  171. odd_evens_dict_rule = {}
  172. try:
  173. odd_evens = result['o']["oe"]["v"]
  174. # 上半场 主队让球条件
  175. odd_evens_dict_rule['two_sides_single'] = "单"
  176. odd_evens_dict_rule['two_sides_double'] = "双"
  177. if pt is 3:
  178. odd_evens_dict['two_sides_single'] = float(odd_evens[1]) - 1
  179. odd_evens_dict['two_sides_double'] = float(odd_evens[3]) - 1
  180. else:
  181. odd_evens_dict['two_sides_single'] = odd_evens[1]
  182. odd_evens_dict['two_sides_double'] = odd_evens[3]
  183. except:
  184. odd_evens_dict['two_sides_single'] = ""
  185. odd_evens_dict['two_sides_single'] = ""
  186. odd_evens_dict_rule['two_sides_double'] = ""
  187. odd_evens_dict_rule['two_sides_double'] = ""
  188. # 球队得分大小 待采集----------------------------------------------------------------------------------------------------
  189. # 联赛id
  190. item['league_id'] = league_id
  191. # 联赛名
  192. item['league_name'] = league_name
  193. # 比赛id
  194. item['game_id'] = game_id
  195. # 球队1
  196. item['team_home'] = team_home
  197. # 球队2
  198. item['team_guest'] = team_guest
  199. # 数量(97>)
  200. item['number'] = number
  201. # 比赛状态
  202. item['zhuangtai'] = zhuangtai
  203. # 日期
  204. item['data_game'] = data_game
  205. # 开赛时间
  206. item['time_game'] = time_game
  207. # 队1分数
  208. item['score_home'] = score_home1
  209. # 队2分数
  210. item['score_guest'] = score_guest1
  211. # 第几节
  212. item['jijie'] = jijie
  213. item['pt'] = pt
  214. # 球队得分
  215. item['qiudui'] = qiudui
  216. # 让球
  217. item['concedes_dict'] = concedes_dict
  218. item['concedes_dict_rule'] = concedes_dict_rule
  219. # 独赢
  220. item['capots_dict'] = capots_dict
  221. # 总得分:大/小
  222. item['total_size_dict'] = total_size_dict
  223. item['total_size_dict_rule'] = total_size_dict_rule
  224. # 总得分:单/双
  225. item['odd_evens_dict'] = odd_evens_dict
  226. item['odd_evens_dict_rule'] = odd_evens_dict_rule
  227. item['bangqiu'] = bangqiu
  228. yield item