bangqiu.py 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  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.pipeline.bangqiu.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. url = 'https://odata.jiushan6688.com/odds6i/d/getodds/zh-cn/sid/4/pt/' + str(
  23. y) + '/ubt/am/pn/0/sb/2/dc/null/pid/0'
  24. yield scrapy.Request(url=url, callback=self.parse, meta={'pt': y}, dont_filter=True)
  25. def parse(self, response):
  26. if response.text:
  27. try:
  28. datas = json.loads(response.text).get('n-ot', "").get('egs', "")
  29. except:
  30. datas = ""
  31. try:
  32. pt = copy.copy(response.meta['pt'])
  33. except:
  34. pt = 0
  35. if datas:
  36. for result in datas:
  37. new_results = result['es']
  38. for new_result in new_results:
  39. game_id = str(new_result['i'][16])
  40. if pt == 1:
  41. # url = "https://hg3535z.com/odds2/d/getamodds?eid=" + game_id + "&iip=false&ubt=am&isp=false"
  42. url = "https://odata.jiushan6688.com/odds6i/d/getamodds/zh-cn/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 == 2:
  45. # url = "https://hg3535z.com/odds2/d/getamodds?eid=" + game_id + "&iip=false&ubt=am&isp=false"
  46. url = "https://odata.jiushan6688.com/odds6i/d/getamodds/zh-cn/eid/" + game_id + "/iip/false/ubt/am/isp/false"
  47. yield Request(url=url, callback=self.parse_each, meta={'pt': pt}, dont_filter=True)
  48. if pt == 3:
  49. # url = "https://hg3535z.com/odds2/d/getamodds?eid=" + game_id + "&iip=false&ubt=am&isp=true"
  50. url = "https://odata.jiushan6688.com/odds6i/d/getamodds/zh-cn/eid/" + game_id + "/iip/false/ubt/am/isp/true"
  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. # print(new_datas)
  56. pt = response.meta['pt']
  57. # print(pt)
  58. bangqiu = json.loads(response.text)['i'][31]
  59. # print(bangqiu)
  60. except:
  61. new_datas = ""
  62. pt = 0
  63. bangqiu = ""
  64. # print(bangqiu)
  65. if new_datas:
  66. # 联赛id
  67. league_id = new_datas["c"]["k"]
  68. # 联赛名
  69. league_name = new_datas["c"]["n"]
  70. new_data = new_datas["es"]
  71. item = Bangqiu()
  72. for result in new_data:
  73. if result['pci']["ctid"] is 0:
  74. # 比赛id
  75. game_id = str(result['k'])
  76. # 球队1
  77. team_home = result['i'][0]
  78. # 球队2
  79. team_guest = result['i'][1]
  80. # 数量(97>)
  81. number = result['i'][2]
  82. # 比赛状态
  83. zhuangtai = result['i'][3]
  84. # 日期
  85. data_game = result['i'][4]
  86. # 开赛时间
  87. time_game = result['i'][5]
  88. # 队1分数
  89. score_home1 = result['i'][10]
  90. # 队2分数
  91. score_guest1 = result['i'][11]
  92. # 第几盘
  93. jijie = result['i'][12]
  94. # 球队得分
  95. qiudui = result['pci'].get('ctn', "")
  96. # --------------------------------------------------让球分割线-----------------------------------------------------------
  97. concedes_dict = {}
  98. concedes_dict_rule = {}
  99. try:
  100. concedes = result['o']["ah"]["v"]
  101. concedes_dict_rule['coh'] = concedes[1]
  102. concedes_dict_rule['cog'] = concedes[3]
  103. if pt is 3:
  104. concedes_dict['coh'] = float(concedes[5]) - 1
  105. concedes_dict['cog'] = float(concedes[7]) - 1
  106. else:
  107. concedes_dict['coh'] = float(concedes[5])
  108. concedes_dict['cog'] = float(concedes[7])
  109. except:
  110. concedes_dict_rule['coh'] = ""
  111. concedes_dict['coh'] = ""
  112. concedes_dict_rule['cog'] = ""
  113. concedes_dict['cog'] = ""
  114. # 让球 前5局-------------------------------------------------------------------------------------------------------------
  115. try:
  116. concedes = result['o']["ahf5in"]["v"]
  117. concedes_dict_rule['coh_5'] = concedes[1]
  118. concedes_dict_rule['cog_5'] = concedes[3]
  119. if pt is 3:
  120. concedes_dict['coh_5'] = float(concedes[5]) - 1
  121. concedes_dict['cog_5'] = float(concedes[7]) - 1
  122. else:
  123. concedes_dict['coh_5'] = concedes[5]
  124. concedes_dict['cog_5'] = concedes[7]
  125. except:
  126. concedes_dict_rule['coh_5'] = ""
  127. concedes_dict['coh_5'] = ""
  128. concedes_dict_rule['cog_5'] = ""
  129. concedes_dict['cog_5'] = ""
  130. # ---------------------------------------------------独赢----------------------------------------------------------------
  131. capots_dict = {}
  132. try:
  133. capots = result['o']["ml"]["v"]
  134. capots_dict['ch'] = capots[1]
  135. capots_dict['cg'] = capots[3]
  136. except:
  137. capots_dict['ch'] = ""
  138. capots_dict['cg'] = ""
  139. # ---------------------------------------------------总得分:大/小--------------------------------------------------------
  140. total_size_dict = {}
  141. total_size_dict_rule = {}
  142. try:
  143. total_sizes = result['o']["ou"]["v"]
  144. total_size_dict_rule['tnb'] = total_sizes[1]
  145. total_size_dict_rule['tns'] = total_sizes[3]
  146. if pt is 3:
  147. total_size_dict['tnb'] = float(total_sizes[5]) - 1
  148. total_size_dict['tns'] = float(total_sizes[7]) - 1
  149. else:
  150. total_size_dict['tnb'] = total_sizes[5]
  151. total_size_dict['tns'] = total_sizes[7]
  152. except:
  153. total_size_dict_rule['tnb'] = ""
  154. total_size_dict['tnb'] = ""
  155. total_size_dict_rule['tns'] = ""
  156. total_size_dict['tns'] = ""
  157. # 总得分: 大/小 前5局-----------------------------------------------------------------------------------------------------
  158. try:
  159. total_sizes = result['o']["ouf5in"]["v"]
  160. total_size_dict_rule['tnb_5'] = total_sizes[1]
  161. total_size_dict_rule['tns_5'] = total_sizes[3]
  162. if pt is 3:
  163. total_size_dict['tnb_5'] = float(total_sizes[5]) - 1
  164. total_size_dict['tns_5'] = float(total_sizes[7]) - 1
  165. else:
  166. total_size_dict['tnb_5'] = total_sizes[5]
  167. total_size_dict['tns_5'] = total_sizes[7]
  168. except:
  169. total_size_dict_rule['tnb_5'] = ""
  170. total_size_dict['tnb_5'] = ""
  171. total_size_dict_rule['tns_5'] = ""
  172. total_size_dict['tns_5'] = ""
  173. # ------------------------------------------------------总得分:单/双-----------------------------------------------------
  174. odd_evens_dict = {}
  175. odd_evens_dict_rule = {}
  176. try:
  177. odd_evens = result['o']["oe"]["v"]
  178. # 上半场 主队让球条件
  179. odd_evens_dict_rule['tss'] = "单"
  180. odd_evens_dict_rule['tsd'] = "双"
  181. if pt is 3:
  182. odd_evens_dict['tss'] = float(odd_evens[1]) - 1
  183. odd_evens_dict['tsd'] = float(odd_evens[3]) - 1
  184. else:
  185. odd_evens_dict['tss'] = odd_evens[1]
  186. odd_evens_dict['tsd'] = odd_evens[3]
  187. except:
  188. odd_evens_dict['tss'] = ""
  189. odd_evens_dict['tsd'] = ""
  190. odd_evens_dict_rule['tss'] = ""
  191. odd_evens_dict_rule['tsd'] = ""
  192. # 联赛id
  193. item['league_id'] = league_id
  194. # 联赛名
  195. item['league_name'] = league_name
  196. # 比赛id
  197. item['game_id'] = game_id
  198. # 球队1
  199. item['team_home'] = team_home
  200. # 球队2
  201. item['team_guest'] = team_guest
  202. # 数量(97>)
  203. item['number'] = number
  204. # 比赛状态
  205. item['zhuangtai'] = zhuangtai
  206. # 日期
  207. item['data_game'] = data_game
  208. # 开赛时间
  209. item['time_game'] = time_game
  210. # 队1分数
  211. item['score_home'] = score_home1
  212. # 队2分数
  213. item['score_guest'] = score_guest1
  214. # 第几节
  215. item['jijie'] = jijie
  216. item['pt'] = pt
  217. # 球队得分
  218. item['qiudui'] = qiudui
  219. # 让球
  220. item['concedes_dict'] = concedes_dict
  221. item['concedes_dict_rule'] = concedes_dict_rule
  222. # 独赢
  223. item['capots_dict'] = capots_dict
  224. # 总得分:大/小
  225. item['total_size_dict'] = total_size_dict
  226. item['total_size_dict_rule'] = total_size_dict_rule
  227. # 总得分:单/双
  228. item['odd_evens_dict'] = odd_evens_dict
  229. item['odd_evens_dict_rule'] = odd_evens_dict_rule
  230. item['bangqiu'] = bangqiu
  231. yield item
  232. # if result['pci']['ctid'] is 208:
  233. # """球队得分大/小 主队"""
  234. # team_score_home_dict = {}
  235. # team_score_home_rule_dict = {}
  236. # try:
  237. # team_score_home = result['o']['ou']['v']
  238. # team_score_home_rule_dict['team_score_big'] = team_score_home[1]
  239. # team_score_home_rule_dict['team_score_small'] = team_score_home[3]
  240. # if pt is 3:
  241. # team_score_home_dict['team_score_big'] = float(team_score_home[5]) - 1
  242. # team_score_home_dict['team_score_small'] = float(team_score_home[7]) - 1
  243. # else:
  244. # team_score_home_dict['team_score_big'] = team_score_home[5]
  245. # team_score_home_dict['team_score_small'] = team_score_home[7]
  246. # except:
  247. # team_score_home_dict['team_score_big'] = ''
  248. # team_score_home_rule_dict['team_score_big'] = ''
  249. # team_score_home_dict['team_score_small'] = ''
  250. # team_score_home_rule_dict['team_score_small'] = ''
  251. # # 球队得分大/小 主队
  252. # item['team_score_home_dict'] = team_score_home_dict
  253. # item['team_score_home_rule_dict'] = team_score_home_rule_dict
  254. #
  255. # if result['pci']['ctid'] is 209:
  256. # """球队得分大/小 客队"""
  257. # team_score_guest_dict = {}
  258. # team_score_guest_rule_dict = {}
  259. # try:
  260. # team_score_guest = result['o']['ou']['v']
  261. # team_score_guest_rule_dict['team_score_big'] = team_score_guest[1]
  262. # team_score_guest_rule_dict['team_score_small'] = team_score_guest[3]
  263. # if pt is 3:
  264. # team_score_guest_dict['team_score_big'] = float(team_score_guest[5]) - 1
  265. # team_score_guest_dict['team_score_small'] = float(team_score_guest[7]) - 1
  266. # else:
  267. # team_score_guest_dict['team_score_big'] = team_score_guest[5]
  268. # team_score_guest_dict['team_score_small'] = team_score_guest[7]
  269. # except:
  270. # team_score_guest_dict['team_score_big'] = ''
  271. # team_score_guest_rule_dict['team_score_big'] = ''
  272. # team_score_guest_dict['team_score_small'] = ''
  273. # team_score_guest_rule_dict['team_score_small'] = ''
  274. # # 球队得分大/小 客队
  275. # item['team_score_guest_dict'] = team_score_guest_dict
  276. # item['team_score_guest_rule_dict'] = team_score_guest_rule_dict
  277. #
  278. # yield item