wangqiu.py 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. # -*- coding: utf-8 -*-
  2. # -*- coding: utf-8 -*-
  3. import copy
  4. import json
  5. import scrapy
  6. from scrapy.http import Request
  7. from ..items import Wangqiu
  8. class LanqiuSpider(scrapy.Spider):
  9. name = "wangqiu"
  10. allowed_domains = ['hg3535z.com']
  11. custom_settings = {
  12. "ITEM_PIPELINES": {
  13. "hg3535.pipelines.Wangqiupipeline": 300,
  14. },
  15. 'LOG_LEVEL': 'DEBUG',
  16. 'LOG_FILE': '../hg3535/log/wangqiu.log'
  17. }
  18. def start_requests(self):
  19. # newall_lists = ['am', 'ftht1x2', 'oe', 'tg', 'htft', 'cs', 'fglg', 'or']
  20. for y in range(1, 4):
  21. url = 'https://hg3535z.com/odds2/d/getodds?sid=3&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. try:
  49. new_datas = json.loads(response.text)['eg']
  50. pt = response.meta['pt']
  51. wangqiu = json.loads(response.text)['i'][31]
  52. except:
  53. new_datas = ""
  54. pt = 0
  55. wangqiu = ""
  56. if new_datas:
  57. # 联赛id
  58. league_id = new_datas["c"]["k"]
  59. # 联赛名
  60. league_name = new_datas["c"]["n"]
  61. new_data = new_datas["es"]
  62. for result in new_data:
  63. item = Wangqiu()
  64. # 比赛id
  65. game_id = str(result['k'])
  66. # 球队1
  67. team_home = result['i'][0]
  68. # 球队2
  69. team_guest = result['i'][1]
  70. # 数量(97>)
  71. number = result['i'][2]
  72. # 比赛状态
  73. zhuangtai = result['i'][3]
  74. # 日期
  75. data_game = result['i'][4]
  76. # 开赛时间
  77. time_game = result['i'][5]
  78. # 队1分数
  79. score_home1 = result['i'][10]
  80. # 队2分数
  81. score_guest1 = result['i'][11]
  82. # 第几盘
  83. jijie = result['i'][12]
  84. # 球队得分
  85. qiudui = result['pci'].get('ctn', "")
  86. # --------------------------------------------------让盘分割线-----------------------------------------------------------
  87. concedes_dict = {}
  88. concedes_dict_rule = {}
  89. try:
  90. concedes = result['o']["ah"]["v"]
  91. concedes_dict_rule['dishes_home'] = concedes[1]
  92. concedes_dict_rule['dishes_guest'] = concedes[3]
  93. if pt is 3:
  94. concedes_dict['dishes_home'] = float(concedes[5]) - 1
  95. concedes_dict['dishes_guest'] = float(concedes[7]) - 1
  96. else:
  97. concedes_dict['dishes_guest'] = concedes[7]
  98. concedes_dict['dishes_home'] = float(concedes[5])
  99. except:
  100. concedes_dict_rule['dishes_home'] = ""
  101. concedes_dict['dishes_home'] = ""
  102. concedes_dict_rule['dishes_guest'] = ""
  103. concedes_dict['dishes_guest'] = ""
  104. # ---------------------------------------------------冠军----------------------------------------------------------------
  105. kemps_dict = {}
  106. try:
  107. kemps = result['o']["ml"]["v"]
  108. kemps_dict['kemp_home'] = kemps[1]
  109. kemps_dict['kemp_guest'] = kemps[3]
  110. except:
  111. kemps_dict['kemp_home'] = ""
  112. kemps_dict['kemp_guest'] = ""
  113. # 第一盘 冠军
  114. try:
  115. kemps = result['o']["mls1"]["v"]
  116. kemps_dict['one_kemp_home'] = kemps[1]
  117. kemps_dict['one_kemp_guest'] = kemps[3]
  118. except:
  119. kemps_dict['one_kemp_home'] = ""
  120. kemps_dict['one_kemp_guest'] = ""
  121. # ---------------------------------------------------让局---------------------------------------------------------------
  122. bureaus_dict = {}
  123. bureaus_dict_rule = {}
  124. try:
  125. bureaus = result['o']["ahfts"]["v"]
  126. bureaus_dict_rule['concede_home'] = bureaus[1]
  127. bureaus_dict_rule['concede_guest'] = bureaus[3]
  128. if pt is 3:
  129. bureaus_dict['concede_home'] = float(bureaus[5]) - 1
  130. bureaus_dict['concede_guest'] = float(bureaus[7]) - 1
  131. else:
  132. bureaus_dict['concede_home'] = bureaus[5]
  133. bureaus_dict['concede_guest'] = bureaus[7]
  134. except:
  135. bureaus_dict_rule['concede_home'] = ""
  136. bureaus_dict['concede_home'] = ""
  137. bureaus_dict_rule['concede_guest'] = ""
  138. bureaus_dict['concede_guest'] = ""
  139. # -----------------------------------------------------总局数:大/小------------------------------------------------------
  140. total_number_dict = {}
  141. total_number_dict_rule = {}
  142. try:
  143. total_numbers = result['o']["oufts"]["v"]
  144. total_number_dict_rule['total_number_big'] = total_numbers[1]
  145. total_number_dict_rule['total_number_small'] = total_numbers[3]
  146. if pt is 3:
  147. total_number_dict['total_number_big'] = float(total_numbers[5]) - 1
  148. total_number_dict['total_number_small'] = float(total_numbers[7]) - 1
  149. else:
  150. total_number_dict['total_number_big'] = total_numbers[5]
  151. total_number_dict['total_number_small'] = total_numbers[7]
  152. except:
  153. total_number_dict_rule['total_number_big'] = ""
  154. total_number_dict['total_number_big'] = ""
  155. total_number_dict_rule['total_number_small'] = ""
  156. total_number_dict['total_number_small'] = ""
  157. # ------------------------------------------------------总局数:单/双-----------------------------------------------------
  158. odd_evens_dict = {}
  159. odd_evens_dict_rule = {}
  160. try:
  161. odd_evens = result['o']["oefts"]["v"]
  162. # 上半场 主队让球条件
  163. odd_evens_dict['two_sides_single'] = odd_evens[1]
  164. odd_evens_dict_rule['two_sides_single'] = "单"
  165. odd_evens_dict['two_sides_double'] = odd_evens[3]
  166. odd_evens_dict_rule['two_sides_double'] = "双"
  167. except:
  168. odd_evens_dict['two_sides_single'] = ""
  169. odd_evens_dict['two_sides_single'] = ""
  170. odd_evens_dict_rule['two_sides_double'] = ""
  171. odd_evens_dict_rule['two_sides_double'] = ""
  172. # 联赛id
  173. item['league_id'] = league_id
  174. # 联赛名
  175. item['league_name'] = league_name
  176. # 比赛id
  177. item['game_id'] = game_id
  178. # 球队1
  179. item['team_home'] = team_home
  180. # 球队2
  181. item['team_guest'] = team_guest
  182. # 数量(97>)
  183. item['number'] = number
  184. # 比赛状态
  185. item['zhuangtai'] = zhuangtai
  186. # 日期
  187. item['data_game'] = data_game
  188. # 开赛时间
  189. item['time_game'] = time_game
  190. # 队1分数
  191. item['score_home'] = score_home1
  192. # 队2分数
  193. item['score_guest'] = score_guest1
  194. # 第几节
  195. item['jijie'] = jijie
  196. item['pt'] = pt
  197. # 球队得分
  198. item['qiudui'] = qiudui
  199. # 让盘
  200. item['concedes_dict'] = concedes_dict
  201. item['concedes_dict_rule'] = concedes_dict_rule
  202. # 冠军
  203. item['kemps_dict'] = kemps_dict
  204. # 让局
  205. item['bureaus_dict'] = bureaus_dict
  206. item['bureaus_dict_rule'] = bureaus_dict_rule
  207. # 总局数大小
  208. item['total_number_dict'] = total_number_dict
  209. item['total_number_dict_rule'] = total_number_dict_rule
  210. # 总局数单双
  211. item['odd_evens_dict'] = odd_evens_dict
  212. item['odd_evens_dict_rule'] = odd_evens_dict_rule
  213. item['wangqiu'] = wangqiu
  214. yield item