bangqiu.py 12 KB

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