wangqiu.py 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. # -*- coding: utf-8 -*-
  2. # -*- coding: utf-8 -*-
  3. import copy
  4. import datetime
  5. import json
  6. import scrapy
  7. from scrapy.http import Request
  8. from ..items import Wangqiu
  9. class LanqiuSpider(scrapy.Spider):
  10. name = "wangqiu"
  11. to_day = datetime.datetime.now()
  12. allowed_domains = ['hg3535z.com']
  13. custom_settings = {
  14. "ITEM_PIPELINES": {
  15. "hg3535.pipeline.wangqiu.Wangqiupipeline": 300,
  16. },
  17. # 'LOG_LEVEL': 'DEBUG',
  18. # 'LOG_FILE': "../hg3535/log/wangqiu_{}_{}_{}.log".format(to_day.year, to_day.month, to_day.day)
  19. }
  20. def start_requests(self):
  21. # newall_lists = ['am', 'ftht1x2', 'oe', 'tg', 'htft', 'cs', 'fglg', 'or']
  22. for y in range(1, 4):
  23. # url = 'https://hg3535z.com/odds2/d/getodds?sid=3&pt='+str(y)+'&ubt=am&pn=0&sb=2&dc=null&pid=0'
  24. url = 'https://odata.jiushan6688.com/odds6i/d/getodds/zh-cn/sid/3/pt/' + str(
  25. y) + '/ubt/am/pn/0/sb/2/dc/null/pid/0'
  26. yield scrapy.Request(url=url, callback=self.parse, meta={'pt': y}, dont_filter=True)
  27. def parse(self, response):
  28. if response.text:
  29. try:
  30. datas = json.loads(response.text).get('n-ot', "").get('egs', "")
  31. except:
  32. datas = ""
  33. try:
  34. pt = copy.copy(response.meta['pt'])
  35. except:
  36. pt = 0
  37. if datas:
  38. for result in datas:
  39. new_results = result['es']
  40. for new_result in new_results:
  41. game_id = str(new_result['i'][16])
  42. if pt == 1:
  43. # url = "https://hg3535z.com/odds2/d/getamodds?eid=" + game_id + "&iip=false&ubt=am&isp=false"
  44. url = "https://odata.jiushan6688.com/odds6i/d/getamodds/zh-cn/eid/" + game_id + "/iip/false/ubt/am/isp/false"
  45. yield Request(url=url, callback=self.parse_each, meta={'pt': pt}, dont_filter=True)
  46. if pt == 2:
  47. # url = "https://hg3535z.com/odds2/d/getamodds?eid=" + game_id + "&iip=false&ubt=am&isp=false"
  48. url = "https://odata.jiushan6688.com/odds6i/d/getamodds/zh-cn/eid/" + game_id + "/iip/false/ubt/am/isp/false"
  49. yield Request(url=url, callback=self.parse_each, meta={'pt': pt}, dont_filter=True)
  50. if pt == 3:
  51. # url = "https://hg3535z.com/odds2/d/getamodds?eid=" + game_id + "&iip=false&ubt=am&isp=true"
  52. url = "https://odata.jiushan6688.com/odds6i/d/getamodds/zh-cn/eid/" + game_id + "/iip/false/ubt/am/isp/true"
  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