roll_wangqiu.py 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364
  1. # -*- coding: utf-8 -*-
  2. import datetime
  3. import json
  4. import jsonpath
  5. import scrapy
  6. from scrapy.http import Request
  7. # from ..items import Lanqiu
  8. from ..items import Roll_Wangqiu
  9. def rangqiu_daxiao(inner):
  10. concede = [inner[i] for i in range(len(inner)) if i % 2 == 1]
  11. # 主队让球条件赔率
  12. concedehome = [concede[i] for i in range(len(concede)) if i % 2 == 0]
  13. # 客队让球条件赔率
  14. concedeguest = [concede[i] for i in range(len(concede)) if i % 2 == 1]
  15. # 主队让球条件
  16. concede_home_rule = [concedehome[i] for i in range(len(concedehome)) if i % 2 == 0]
  17. # 主队让球赔率
  18. concede_home = [concedehome[i] for i in range(len(concedehome)) if i % 2 == 1]
  19. # 客队让球条件
  20. concede_guest_rule = [concedeguest[i] for i in range(len(concedeguest)) if i % 2 == 0]
  21. # 客队让球赔率
  22. concede_guest = [concedeguest[i] for i in range(len(concedeguest)) if i % 2 == 1]
  23. return concede_home_rule, concede_home, concede_guest_rule, concede_guest
  24. def danshaung_fun(inner):
  25. odd_even = [inner[i] for i in range(len(inner)) if i % 2 == 1]
  26. # 全场 总分单
  27. odd_even_odd = [odd_even[i] for i in range(len(odd_even)) if i % 2 == 0]
  28. # 全场 总分双
  29. odd_even_even = [odd_even[i] for i in range(len(odd_even)) if i % 2 == 1]
  30. return odd_even_odd, odd_even_even
  31. class WangqiuSpider(scrapy.Spider):
  32. name = "roll_wangqiu"
  33. to_day = datetime.datetime.now()
  34. allowed_domains = ['hg3535z.com']
  35. # start_urls = ['https://hg3535z.com/odds2/d/getodds?sid=3&pt=4&ubt=am&pn=0&sb=2&dc=null&pid=0'] # 滚球菜单 网球滚球列url
  36. start_urls = [
  37. 'https://odata.jiushan6688.com/odds6i/d/getodds/zh-cn/sid/3/pt/4/ubt/am/pn/0/sb/2/dc/null/pid/0'] # 滚球菜单 网球滚球列url
  38. custom_settings = {
  39. "ITEM_PIPELINES": {
  40. # "hg3535.pipeline.Roll_Wangqiupipeline": 350,
  41. "hg3535.pipeline.roll_wangqiu.Roll_Wangqiupipeline": 350,
  42. },
  43. # 'LOG_LEVEL': 'DEBUG',
  44. # 'LOG_FILE': "../hg3535/log/roll_wangqiu_{}_{}_{}.log".format(to_day.year, to_day.month, to_day.day)
  45. }
  46. # start_urls = ['http://hg3535z.com/odds2/d/getodds?sid=2&pt=3&ubt=am&pn=0&sb=2&dc=null&pid=0']
  47. # http: // hg3535z.com / odds2 / d / getamodds?eid = 3098030 & iip = false & ubt = am & isp = false
  48. # http://hg3535z.com/odds2/d/getodds?sid=2&pt=2&ubt=am&pn=0&sb=2&dc=null&pid=0
  49. def parse(self, response):
  50. datas = json.loads(response.text)
  51. # item = Today_all()
  52. ids = jsonpath.jsonpath(datas, '$..i-ot[0]..egs..es..i[16]') # ids新列表
  53. # print(ids)
  54. if ids:
  55. ids = set(ids)
  56. for i in ids:
  57. # urls = 'https://www.hg3535z.com/odds2/d/getamodds?eid={}&iip=true&ubt=am&isp=false'.format(i)
  58. urls = 'https://odata.jiushan6688.com/odds6i/d/getamodds/zh-cn/eid/{}/iip/true/ubt/am/isp/false'.format(
  59. i)
  60. # print(urls)
  61. yield Request(url=urls, callback=self.parse_other, dont_filter=True)
  62. def parse_other(self, response):
  63. new_datas = json.loads(response.text).get('eg', "")
  64. try:
  65. pt = response.meta['pt']
  66. except:
  67. pt = 0
  68. item = Roll_Wangqiu()
  69. if new_datas:
  70. # 联赛id
  71. league_id = new_datas.get("c", "").get("k", "")
  72. # 联赛名
  73. league_name = new_datas.get("c", "").get("n", "")
  74. new_data = new_datas.get("es", "")
  75. for result in new_data:
  76. # result = new_data[0]
  77. # 比赛id
  78. game_id = str(result['k'])
  79. # 球队1
  80. team_home = result['i'][0]
  81. # 球队2
  82. team_guest = result['i'][1]
  83. # 数量(97>)
  84. number = result['i'][2]
  85. # 比赛状态
  86. zhuangtai = result['i'][3]
  87. # 日期
  88. data_game = result['i'][4]
  89. # 开赛时间 滚球实际只有一个进行时间
  90. # time_game = result['i'][5]
  91. try:
  92. time_game = result['sb']['ct']
  93. except:
  94. time_game = '01:00'
  95. # time_game = '00:00:00'
  96. # time_game = result.get('sb',"").get('ct',"")
  97. # 队1分数
  98. # score_home1 = result['i'][10]
  99. # 队2分数
  100. # score_guest1 = result['i'][11]
  101. # 第几节
  102. # jijie = result['i'][12]
  103. # 球队得分
  104. qiudui = result['pci'].get('ctn', "")
  105. # ----------------------------------------让球分割线---------------------------------------------------------------------------
  106. concedes_dict = {}
  107. concedes_dict_rule = {}
  108. try:
  109. # 滚球让盘
  110. concedes = result['o']["ah"]["v"]
  111. concedes_dict_rule['dishes_home'] = concedes[1]
  112. concedes_dict['dishes_home'] = concedes[5]
  113. concedes_dict_rule['dishes_guest'] = concedes[3]
  114. concedes_dict['dishes_guest'] = concedes[7]
  115. except:
  116. concedes_dict_rule['dishes_home'] = ""
  117. concedes_dict['dishes_home'] = ""
  118. concedes_dict_rule['dishes_guest'] = ""
  119. concedes_dict['dishes_guest'] = ""
  120. # print(concedes_dict)
  121. # ----------------------------------------第一节让球分割线----------------------------------------------------------------
  122. # 第一节让盘
  123. try:
  124. # 第一节让球
  125. one_concedes = result['o']["ahs1"]["v"]
  126. concedes_dict_rule['one_dishes_home'] = one_concedes[1]
  127. concedes_dict['one_dishes_home'] = one_concedes[5]
  128. concedes_dict_rule['one_dishes_guest'] = one_concedes[3]
  129. concedes_dict['one_dishes_guest'] = one_concedes[7]
  130. except:
  131. concedes_dict_rule['one_dishes_home'] = ""
  132. concedes_dict['one_dishes_home'] = ""
  133. concedes_dict_rule['one_dishes_guest'] = ""
  134. concedes_dict['one_dishes_guest'] = ""
  135. # ----------------------------------------第二节让球分割线----------------------------------------------------------------
  136. # 第二节让盘
  137. try:
  138. two_concedes = result['o']["ahs2"]["v"]
  139. concedes_dict_rule['two_dishes_home'] = two_concedes[1]
  140. concedes_dict['two_dishes_home'] = two_concedes[5]
  141. concedes_dict_rule['two_dishes_guest'] = two_concedes[3]
  142. concedes_dict['two_dishes_guest'] = two_concedes[7]
  143. except:
  144. concedes_dict_rule['two_dishes_home'] = ""
  145. concedes_dict['two_dishes_home'] = ""
  146. concedes_dict_rule['two_dishes_guest'] = ""
  147. concedes_dict['two_dishes_guest'] = ""
  148. # ---------------------------------------------------冠军 滚球是独赢-----------------------------------------------------
  149. kemps_dict = {}
  150. try:
  151. # 滚球独赢
  152. kemps = result['o']["ml"]["v"]
  153. kemps_dict['kemp_home'] = kemps[1]
  154. kemps_dict['kemp_guest'] = kemps[3]
  155. except:
  156. kemps_dict['kemp_home'] = ""
  157. kemps_dict['kemp_guest'] = ""
  158. # 第一盘 冠军 第一盘独赢 滚球是独赢
  159. try:
  160. kemps = result['o']["mls1"]["v"]
  161. kemps_dict['one_kemp_home'] = kemps[1]
  162. kemps_dict['one_kemp_guest'] = kemps[3]
  163. except:
  164. kemps_dict['one_kemp_home'] = ""
  165. kemps_dict['one_kemp_guest'] = ""
  166. try: # 第二盘 独赢
  167. kemps = result['o']["mls2"]["v"]
  168. kemps_dict['two_kemp_home'] = kemps[1]
  169. kemps_dict['two_kemp_guest'] = kemps[3]
  170. except:
  171. kemps_dict['two_kemp_home'] = ""
  172. kemps_dict["two_kemp_guest"] = ""
  173. # ---------------------------------------------------让局---------------------------------------------------------------
  174. bureaus_dict = {}
  175. bureaus_dict_rule = {}
  176. try:
  177. bureaus = result['o']["ahfts"]["v"]
  178. bureaus_dict_rule['concede_home'] = bureaus[1]
  179. bureaus_dict['concede_home'] = bureaus[5]
  180. bureaus_dict_rule['concede_guest'] = bureaus[3]
  181. bureaus_dict['concede_guest'] = bureaus[7]
  182. except:
  183. bureaus_dict_rule['concede_home'] = ""
  184. bureaus_dict['concede_home'] = ""
  185. bureaus_dict_rule['concede_guest'] = ""
  186. bureaus_dict['concede_guest'] = ""
  187. # -----------------------------------------------------总局数 第一盘:大/小------------------------------------------------
  188. total_number_dict = {}
  189. total_number_dict_rule = {}
  190. try: # 总局数 滚球大小
  191. total_numbers = result['o']["oufts"]["v"]
  192. total_number_dict_rule['total_number_big'] = total_numbers[1]
  193. total_number_dict['total_number_big'] = total_numbers[5]
  194. total_number_dict_rule['total_number_small'] = total_numbers[3]
  195. total_number_dict['total_number_small'] = total_numbers[7]
  196. except:
  197. total_number_dict_rule['total_number_big'] = ""
  198. total_number_dict['total_number_big'] = ""
  199. total_number_dict_rule['total_number_small'] = ""
  200. total_number_dict['total_number_small'] = ""
  201. # 第一节盘
  202. try:
  203. one_total_sizes = result['o']["ous1"]["v"]
  204. total_number_dict_rule["one_total_number_big"] = one_total_sizes[1]
  205. total_number_dict["one_total_number_big"] = one_total_sizes[5]
  206. total_number_dict_rule["one_total_number_small"] = one_total_sizes[3]
  207. total_number_dict["one_total_number_small"] = one_total_sizes[7]
  208. except:
  209. total_number_dict_rule["one_total_number_big"] = ""
  210. total_number_dict["one_total_number_big"] = ""
  211. total_number_dict_rule["one_total_number_small"] = ""
  212. total_number_dict["one_total_number_small"] = ""
  213. # 第二节盘
  214. try:
  215. two_total_sizes = result['o']["ous2"]["v"]
  216. total_number_dict_rule["two_total_number_big"] = two_total_sizes[1]
  217. total_number_dict["two_total_number_big"] = two_total_sizes[5]
  218. total_number_dict_rule["two_total_number_small"] = two_total_sizes[3]
  219. total_number_dict["two_total_number_small"] = two_total_sizes[7]
  220. except:
  221. total_number_dict_rule["two_total_number_big"] = ""
  222. total_number_dict["two_total_number_big"] = ""
  223. total_number_dict_rule["two_total_number_small"] = ""
  224. total_number_dict["two_total_number_small"] = ""
  225. # 第三节盘
  226. try:
  227. three_total_sizes = result['o']["ous3"]["v"]
  228. total_number_dict_rule["three_total_number_big"] = three_total_sizes[1]
  229. total_number_dict["three_total_number_big"] = three_total_sizes[5]
  230. total_number_dict_rule["three_total_number_small"] = three_total_sizes[3]
  231. total_number_dict["three_total_number_small"] = three_total_sizes[7]
  232. except:
  233. total_number_dict_rule["three_total_number_big"] = ""
  234. total_number_dict["three_total_number_big"] = ""
  235. total_number_dict_rule["three_total_number_small"] = ""
  236. total_number_dict["three_total_number_small"] = ""
  237. # ------------------------------------------------------总局数:单/双-----------------------------------------------------
  238. odd_evens_dict = {}
  239. odd_evens_dict_rule = {}
  240. try:
  241. odd_evens = result['o']["oefts"]["v"]
  242. # 上半场 主队让球条件
  243. odd_evens_dict['two_sides_single'] = odd_evens[1] # 之前是odd_even_odd
  244. odd_evens_dict_rule['two_sides_single'] = "单"
  245. odd_evens_dict['two_sides_double'] = odd_evens[3]
  246. odd_evens_dict_rule['two_sides_double'] = "双"
  247. except:
  248. odd_evens_dict['two_sides_single'] = ""
  249. odd_evens_dict['two_sides_double'] = ""
  250. odd_evens_dict_rule['two_sides_double'] = ""
  251. odd_evens_dict_rule['two_sides_single'] = ""
  252. # 盘,局,点
  253. sq_dict = {}
  254. # 每局比分
  255. score_dict = {}
  256. try:
  257. saiqing = []
  258. # h为第一个队伍,a为第二个队伍
  259. s = result['sb']['cp'] # 当前比赛是第几节
  260. cps = result['sb']['ps']
  261. # 队伍1 当前的大比分
  262. h = result['sb']['h']
  263. # 队伍2 当前的大比分
  264. a = result['sb']['a']
  265. for cp in cps:
  266. # 当前比分
  267. if cp['p'] == 'p':
  268. score_dict['current_point_home_guest'] = str(cp['h']) + ':' + str(cp['a'])
  269. # 每局比分
  270. if cp['p'] == 's1':
  271. score_dict['one_score'] = str(cp['h']) + '-' + str(cp['a'])
  272. elif cp['p'] == 's2':
  273. score_dict['second_score'] = str(cp['h']) + '-' + str(cp['a'])
  274. elif cp['p'] == 's3':
  275. score_dict['third_score'] = str(cp['h']) + '-' + str(cp['a'])
  276. elif cp['p'] == 's4':
  277. score_dict['four_score'] = str(cp['h']) + '-' + str(cp['a'])
  278. elif cp['p'] == 's5':
  279. score_dict['five_score'] = str(cp['h']) + '-' + str(cp['a'])
  280. cp.pop('e')
  281. cp.pop('adv')
  282. cp['cp'] = s
  283. saiqing.append(cp)
  284. sq_dict['ps'] = saiqing
  285. # print(sq_dict)
  286. except:
  287. sq_dict['ps'] = None
  288. # 队伍1
  289. h = 0
  290. # 队伍2
  291. a = 0
  292. s = 0
  293. # 联赛id
  294. item['league_id'] = league_id
  295. # 联赛名
  296. item['league_name'] = league_name
  297. # 比赛id
  298. item['game_id'] = game_id
  299. # 球队1
  300. item['team_home'] = team_home
  301. # 球队2
  302. item['team_guest'] = team_guest
  303. # 数量(97>)
  304. item['number'] = number
  305. # 比赛状态
  306. item['zhuangtai'] = zhuangtai
  307. # 日期
  308. item['data_game'] = data_game
  309. # 开赛时间
  310. item['time_game'] = time_game
  311. # 队1分数
  312. item['score_home'] = h
  313. # 队2分数
  314. item['score_guest'] = a
  315. # 当前第几节
  316. item['jijie'] = s
  317. item['pt'] = pt
  318. # 每局比分
  319. item['score_dict'] = score_dict
  320. # 球队得分
  321. item['qiudui'] = qiudui
  322. # 让盘
  323. item['concedes_dict'] = concedes_dict
  324. item['concedes_dict_rule'] = concedes_dict_rule
  325. # 冠军
  326. item['kemps_dict'] = kemps_dict
  327. # 让局
  328. item['bureaus_dict'] = bureaus_dict
  329. item['bureaus_dict_rule'] = bureaus_dict_rule
  330. # 总局数大小
  331. item['total_number_dict'] = total_number_dict
  332. item['total_number_dict_rule'] = total_number_dict_rule
  333. # 总局数单双
  334. item['odd_evens_dict'] = odd_evens_dict
  335. item['odd_evens_dict_rule'] = odd_evens_dict_rule
  336. item['sq_dict'] = sq_dict
  337. yield item