hg3535_wangqiu.py 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373
  1. # -*- coding: utf-8 -*-
  2. import json
  3. import jsonpath
  4. import scrapy
  5. from scrapy.http import Request
  6. # from ..items import Lanqiu
  7. from ..items import Roll_Wangqiu
  8. def rangqiu_daxiao(inner):
  9. concede = [inner[i] for i in range(len(inner)) if i % 2 == 1]
  10. # 主队让球条件赔率
  11. concedehome = [concede[i] for i in range(len(concede)) if i % 2 == 0]
  12. # 客队让球条件赔率
  13. concedeguest = [concede[i] for i in range(len(concede)) if i % 2 == 1]
  14. # 主队让球条件
  15. concede_home_rule = [concedehome[i] for i in range(len(concedehome)) if i % 2 == 0]
  16. # 主队让球赔率
  17. concede_home = [concedehome[i] for i in range(len(concedehome)) if i % 2 == 1]
  18. # 客队让球条件
  19. concede_guest_rule = [concedeguest[i] for i in range(len(concedeguest)) if i % 2 == 0]
  20. # 客队让球赔率
  21. concede_guest = [concedeguest[i] for i in range(len(concedeguest)) if i % 2 == 1]
  22. return concede_home_rule, concede_home, concede_guest_rule, concede_guest
  23. def danshaung_fun(inner):
  24. odd_even = [inner[i] for i in range(len(inner)) if i % 2 == 1]
  25. # 全场 总分单
  26. odd_even_odd = [odd_even[i] for i in range(len(odd_even)) if i % 2 == 0]
  27. # 全场 总分双
  28. odd_even_even = [odd_even[i] for i in range(len(odd_even)) if i % 2 == 1]
  29. return odd_even_odd, odd_even_even
  30. class WangqiuSpider(scrapy.Spider):
  31. name = "roll_wangqiu"
  32. allowed_domains = ['hg3535z.com']
  33. start_urls = ['https://hg3535z.com/odds2/d/getodds?sid=3&pt=4&ubt=am&pn=0&sb=2&dc=null&pid=0'] # 滚球菜单 网球滚球列url
  34. custom_settings = {
  35. "ITEM_PIPELINES": {
  36. "hg3535.pipelines.Roll_Wangqiupipeline": 350,
  37. }
  38. }
  39. # start_urls = ['http://hg3535z.com/odds2/d/getodds?sid=2&pt=3&ubt=am&pn=0&sb=2&dc=null&pid=0']
  40. # http: // hg3535z.com / odds2 / d / getamodds?eid = 3098030 & iip = false & ubt = am & isp = false
  41. # http://hg3535z.com/odds2/d/getodds?sid=2&pt=2&ubt=am&pn=0&sb=2&dc=null&pid=0
  42. def parse(self, response):
  43. datas = json.loads(response.text)
  44. # item = Today_all()
  45. ids = jsonpath.jsonpath(datas, '$..i-ot[0]..egs..es..i[16]') # ids新列表
  46. print(ids)
  47. if ids:
  48. ids = set(ids)
  49. for i in ids:
  50. urls = 'https://hg3535z.com/odds2/d/getamodds?eid={}&iip=true&ubt=am&isp=false'.format(i)
  51. print(urls)
  52. yield Request(url=urls, callback=self.parse_other)
  53. def parse_other(self,response):
  54. new_datas = json.loads(response.text).get('eg', "")
  55. try:
  56. pt = response.meta['pt']
  57. except:
  58. pt = 0
  59. item = Roll_Wangqiu()
  60. if new_datas:
  61. # 联赛id
  62. league_id = new_datas.get("c", "").get("k", "")
  63. # 联赛名
  64. league_name = new_datas.get("c", "").get("n", "")
  65. new_data = new_datas.get("es", "")
  66. result = new_data[0]
  67. # 比赛id
  68. game_id = str(result['k'])
  69. # 球队1
  70. team_home = result['i'][0]
  71. # 球队2
  72. team_guest = result['i'][1]
  73. # 数量(97>)
  74. number = result['i'][2]
  75. # 比赛状态
  76. zhuangtai = result['i'][3]
  77. # 日期
  78. data_game = result['i'][4]
  79. # 开赛时间 滚球实际只有一个进行时间
  80. # time_game = result['i'][5]
  81. try:
  82. time_game = result['sb']['ct']
  83. except:
  84. time_game = '01:00'
  85. # time_game = '00:00:00'
  86. # time_game = result.get('sb',"").get('ct',"")
  87. # 队1分数
  88. score_home1 = result['i'][10]
  89. # 队2分数
  90. score_guest1 = result['i'][11]
  91. # 第几节
  92. jijie = result['i'][12]
  93. # 球队得分
  94. qiudui = result['pci'].get('ctn', "")
  95. # ----------------------------------------让球分割线---------------------------------------------------------------------------
  96. concedes_dict = {}
  97. concedes_dict_rule = {}
  98. try:
  99. # 滚球让盘
  100. concedes = result['o']["ah"]["v"]
  101. concedes_dict_rule['dishes_home'] = concedes[1]
  102. concedes_dict['dishes_home'] = concedes[5]
  103. concedes_dict_rule['dishes_guest'] = concedes[3]
  104. concedes_dict['dishes_guest'] = concedes[7]
  105. except:
  106. concedes_dict_rule['dishes_home'] = ""
  107. concedes_dict['dishes_home'] = ""
  108. concedes_dict_rule['dishes_guest'] = ""
  109. concedes_dict['dishes_guest'] = ""
  110. # print(concedes_dict)
  111. # ----------------------------------------第一节让球分割线---------------------------------------------------------------------------
  112. #第一节让球
  113. try:
  114. # 第一节让球
  115. one_concedes = result['o']["ahs1"]["v"]
  116. one_concede_home_rule,one_concede_home,one_concede_guest_rule,one_concede_guest= rangqiu_daxiao(inner=one_concedes)
  117. concedes_dict_rule['one_concede_home'] = ''.join(one_concede_home_rule)
  118. concedes_dict['one_concede_home'] = ''.join(one_concede_home)
  119. concedes_dict_rule['one_concede_guest'] = ''.join(one_concede_guest_rule)
  120. concedes_dict['one_concede_guest'] = ''.join(one_concede_guest)
  121. except:
  122. one_concede_guest = ""
  123. one_concede_guest_rule = ""
  124. one_concede_home = ""
  125. one_concede_home_rule = ""
  126. concedes_dict['one_concede_home_rule'] = one_concede_home_rule
  127. concedes_dict['one_concede_home'] = one_concede_home
  128. concedes_dict['one_concede_guest_rule'] = one_concede_guest_rule
  129. concedes_dict['one_concede_guest'] = one_concede_guest
  130. # ----------------------------------------第二节让球分割线---------------------------------------------------------------------------
  131. #第二节让球
  132. # 第二节让球
  133. try:
  134. two_concedes = result['o']["ahs2"]["v"]
  135. two_concede_home_rule,two_concede_home,two_concede_guest_rule,two_concede_guest = rangqiu_daxiao(inner=two_concedes)
  136. concedes_dict_rule['two_concede_home'] = ''.join(two_concede_home_rule)
  137. concedes_dict['two_concede_home'] = ''.join(two_concede_home)
  138. concedes_dict_rule['two_concede_guest'] = ''.join(two_concede_guest_rule)
  139. concedes_dict['two_concede_guest'] = ''.join(two_concede_guest)
  140. except:
  141. two_concede_guest = ""
  142. two_concede_guest_rule = ""
  143. two_concede_home = ""
  144. two_concede_home_rule = ""
  145. concedes_dict_rule['two_concede_home'] = two_concede_home_rule
  146. concedes_dict['two_concede_home'] = two_concede_home
  147. concedes_dict_rule['two_concede_guest'] = two_concede_guest_rule
  148. concedes_dict['two_concede_guest'] = two_concede_guest
  149. # ---------------------------------------------------冠军 滚球是独赢----------------------------------------------------------------
  150. kemps_dict = {}
  151. try:
  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] #添加前缀wp
  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. one_total_sizes_big_rule,one_total_sizes_big,one_total_sizes_small_rule,one_total_sizes_small = rangqiu_daxiao(inner=one_total_sizes)
  205. total_number_dict_rule["one_total_sizes_big"] = ''.join(one_total_sizes_big_rule)
  206. total_number_dict["one_total_sizes_big"] = ''.join(one_total_sizes_big)
  207. total_number_dict_rule["one_total_sizes_small"] = ''.join(one_total_sizes_small_rule)
  208. total_number_dict["one_total_sizes_small"] = ''.join(one_total_sizes_small)
  209. except:
  210. one_total_sizes_big_rule = ""
  211. one_total_sizes_big = ""
  212. one_total_sizes_small_rule = ""
  213. one_total_sizes_small = ""
  214. total_number_dict_rule["one_total_sizes_big"] = ''.join(one_total_sizes_big_rule)
  215. total_number_dict["one_total_sizes_big"] = ''.join(one_total_sizes_big)
  216. total_number_dict_rule["one_total_sizes_small"] = ''.join(one_total_sizes_small_rule)
  217. total_number_dict["one_total_sizes_small"] = ''.join(one_total_sizes_small)
  218. # 第二节盘
  219. try:
  220. two_total_sizes = result['o']["ous2"]["v"]
  221. two_total_sizes_big_rule,two_total_sizes_big,two_total_sizes_small_rule,two_total_sizes_small = rangqiu_daxiao(inner=two_total_sizes)
  222. total_number_dict_rule["two_total_sizes_big"] = two_total_sizes_big_rule
  223. total_number_dict["two_total_sizes_big"] = "".join(two_total_sizes_big)
  224. total_number_dict_rule["two_total_sizes_small"] = "".join(two_total_sizes_small_rule)
  225. total_number_dict["two_total_sizes_small"] = "".join(two_total_sizes_small)
  226. except:
  227. two_total_sizes_big_rule = ""
  228. two_total_sizes_big = ""
  229. two_total_sizes_small_rule = ""
  230. two_total_sizes_small = ""
  231. total_number_dict_rule["two_total_sizes_big"] = two_total_sizes_big_rule
  232. total_number_dict["two_total_sizes_big"] = ''.join(two_total_sizes_big)
  233. total_number_dict_rule["two_total_sizes_small"] = ''.join(two_total_sizes_small_rule)
  234. total_number_dict["two_total_sizes_small"] = ''.join(two_total_sizes_small)
  235. # 第三节盘
  236. try:
  237. three_total_sizes = result['o']["ous3"]["v"]
  238. three_total_sizes_big_rule,three_total_sizes_big,three_total_sizes_small_rule,three_total_sizes_small = rangqiu_daxiao(inner=three_total_sizes)
  239. total_number_dict_rule["three_total_sizes_big"] = ''.join(three_total_sizes_big_rule)
  240. total_number_dict["three_total_sizes_big"] = three_total_sizes_big
  241. total_number_dict_rule["three_total_sizes_small"] = ''.join(three_total_sizes_small_rule)
  242. total_number_dict["three_total_sizes_small"] = ''.join(three_total_sizes_small)
  243. except:
  244. three_total_sizes_big_rule = ""
  245. three_total_sizes_big = ""
  246. three_total_sizes_small_rule = ""
  247. three_total_sizes_small = ""
  248. total_number_dict_rule["three_total_sizes_big"] = ''.join(three_total_sizes_big_rule)
  249. total_number_dict["three_total_sizes_big"] = three_total_sizes_big
  250. total_number_dict_rule["three_total_sizes_small"] = ''.join(three_total_sizes_small_rule)
  251. total_number_dict["three_total_sizes_small"] = three_total_sizes_small
  252. # ------------------------------------------------------总局数:单/双-----------------------------------------------------
  253. odd_evens_dict = {}
  254. odd_evens_dict_rule = {}
  255. try:
  256. odd_evens = result['o']["oefts"]["v"]
  257. # 上半场 主队让球条件
  258. odd_evens_dict['two_sides_single'] = odd_evens[1] # 之前是odd_even_odd
  259. odd_evens_dict_rule['two_sides_single'] = "单"
  260. odd_evens_dict['two_sides_double'] = odd_evens[3]
  261. odd_evens_dict_rule['two_sides_double'] = "双"
  262. except:
  263. odd_evens_dict['two_sides_single'] = ""
  264. odd_evens_dict['two_sides_single'] = ""
  265. odd_evens_dict_rule['two_sides_double'] = ""
  266. odd_evens_dict_rule['two_sides_double'] = ""
  267. # 联赛id
  268. item['league_id'] = league_id
  269. # 联赛名
  270. item['league_name'] = league_name
  271. # 比赛id
  272. item['game_id'] = game_id
  273. # 球队1
  274. item['team_home'] = team_home
  275. # 球队2
  276. item['team_guest'] = team_guest
  277. # 数量(97>)
  278. item['number'] = number
  279. # 比赛状态
  280. item['zhuangtai'] = zhuangtai
  281. # 日期
  282. item['data_game'] = data_game
  283. # 开赛时间
  284. item['time_game'] = time_game
  285. # 队1分数
  286. item['score_home'] = score_home1
  287. # 队2分数
  288. item['score_guest'] = score_guest1
  289. # 第几节
  290. item['jijie'] = jijie
  291. item['pt'] = pt
  292. # 球队得分
  293. item['qiudui'] = qiudui
  294. # 让盘
  295. item['concedes_dict'] = concedes_dict
  296. item['concedes_dict_rule'] = concedes_dict_rule
  297. # 冠军
  298. item['kemps_dict'] = kemps_dict
  299. # 让局
  300. item['bureaus_dict'] = bureaus_dict
  301. item['bureaus_dict_rule'] = bureaus_dict_rule
  302. # 总局数大小
  303. item['total_number_dict'] = total_number_dict
  304. item['total_number_dict_rule'] = total_number_dict_rule
  305. # 总局数单双
  306. item['odd_evens_dict'] = odd_evens_dict
  307. item['odd_evens_dict_rule'] = odd_evens_dict_rule
  308. yield item