wangqiu.py 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  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. }
  16. def start_requests(self):
  17. # newall_lists = ['am', 'ftht1x2', 'oe', 'tg', 'htft', 'cs', 'fglg', 'or']
  18. for y in range(1, 4):
  19. url = 'https://hg3535z.com/odds2/d/getodds?sid=3&pt='+str(y)+'&ubt=am&pn=0&sb=2&dc=null&pid=0'
  20. yield scrapy.Request(url=url, callback=self.parse, meta={'pt': y, 'dont_redirect': True})
  21. def parse(self, response):
  22. if response.text:
  23. try:
  24. datas = json.loads(response.text).get('n-ot', "").get('egs', "")
  25. except:
  26. datas = ""
  27. try:
  28. pt = copy.copy(response.meta['pt'])
  29. except:
  30. pt = 0
  31. if datas:
  32. for result in datas:
  33. new_results = result['es']
  34. for new_result in new_results:
  35. game_id = str(new_result['i'][16])
  36. if pt == 1:
  37. url = "https://hg3535z.com/odds2/d/getamodds?eid=" + game_id + "iip=false&ubt=am&isp=false"
  38. yield Request(url=url, callback=self.parse_each, meta={'pt': pt})
  39. if pt == 2:
  40. url = "https://hg3535z.com/odds2/d/getamodds?eid=" + game_id + "iip=false&ubt=am&isp=false"
  41. yield Request(url=url, callback=self.parse_each, meta={'pt': pt})
  42. if pt == 3:
  43. url = "https://hg3535z.com/odds2/d/getamodds?eid=" + game_id + "iip=false&ubt=am&isp=true"
  44. yield Request(url=url, callback=self.parse_each, meta={'pt': pt})
  45. # http://hg3535z.com/odds2/d/getamodds?eid=3120299&iip=false&ubt=am&isp=false
  46. def parse_each(self, response):
  47. try:
  48. new_datas = json.loads(response.text)['eg']
  49. except:
  50. new_datas = ""
  51. try:
  52. pt = response.meta['pt']
  53. except:
  54. pt = 0
  55. if new_datas:
  56. # 联赛id
  57. league_id = new_datas["c"]["k"]
  58. # 联赛名
  59. league_name = new_datas["c"]["n"]
  60. new_data = new_datas["es"]
  61. for result in new_data:
  62. item = Wangqiu()
  63. # 比赛id
  64. game_id = str(result['k'])
  65. # 球队1
  66. team_home = result['i'][0]
  67. # 球队2
  68. team_guest = result['i'][1]
  69. # 数量(97>)
  70. number = result['i'][2]
  71. # 比赛状态
  72. zhuangtai = result['i'][3]
  73. # 日期
  74. data_game = result['i'][4]
  75. # 开赛时间
  76. time_game = result['i'][5]
  77. # 队1分数
  78. score_home1 = result['i'][10]
  79. # 队2分数
  80. score_guest1 = result['i'][11]
  81. # 第几盘
  82. jijie = result['i'][12]
  83. # 球队得分
  84. qiudui = result['pci'].get('ctn', "")
  85. # --------------------------------------------------让盘分割线-----------------------------------------------------------
  86. concedes_dict = {}
  87. concedes_dict_rule = {}
  88. try:
  89. concedes = result['o']["ah"]["v"]
  90. # concedes_dict_rule['wq_concede_home'] = concedes[1]
  91. home_rule = concedes[1]
  92. if home_rule.startswith('+'):
  93. n_home_rule = home_rule.replace('+', '-')
  94. concedes_dict_rule['wq_concede_home'] = n_home_rule
  95. if home_rule.startswith('-'):
  96. n_home_rule = home_rule.replace('-', '+')
  97. concedes_dict_rule['wq_concede_home'] = n_home_rule
  98. concedes_dict['wq_concede_home'] = concedes[5]
  99. # concedes_dict_rule['wq_concede_guest'] = concedes[3]
  100. guest_rule = concedes[3]
  101. if guest_rule.startswith('+'):
  102. n_guest_rule = guest_rule.replace('+', '-')
  103. concedes_dict_rule['wq_concede_guest'] = n_guest_rule
  104. if guest_rule.startswith('-'):
  105. n_guest_rule = guest_rule.replace('-', '+')
  106. concedes_dict_rule['wq_concede_guest'] = n_guest_rule
  107. concedes_dict['wq_concede_guest'] = concedes[7]
  108. except:
  109. concedes_dict_rule['wq_concede_home'] = ""
  110. concedes_dict['wq_concede_home'] = ""
  111. concedes_dict_rule['wq_concede_guest'] = ""
  112. concedes_dict['wq_concede_guest'] = ""
  113. # print(concedes_dict)
  114. # ---------------------------------------------------冠军----------------------------------------------------------------
  115. kemps_dict = {}
  116. try:
  117. kemps = result['o']["ml"]["v"]
  118. kemps_dict['wq_kemp_home'] = kemps[1]
  119. kemps_dict['wq_kemp_guest'] = kemps[3]
  120. except:
  121. kemps_dict['wq_kemp_home'] = ""
  122. kemps_dict['wq_kemp_guest'] = ""
  123. # 第一盘 冠军
  124. try:
  125. kemps = result['o']["mls1"]["v"]
  126. kemps_dict['wq_one_kemp_home'] = kemps[1]
  127. kemps_dict['wq_one_kemp_guest'] = kemps[3]
  128. except:
  129. kemps_dict['wq_one_kemp_home'] = ""
  130. kemps_dict['wq_one_kemp_guest'] = ""
  131. # ---------------------------------------------------让局---------------------------------------------------------------
  132. bureaus_dict = {}
  133. bureaus_dict_rule = {}
  134. try:
  135. bureaus = result['o']["ahfts"]["v"]
  136. # bureaus_dict_rule['wq_bureau_home'] = bureaus[1]
  137. home_rule = bureaus[1]
  138. if home_rule.startswith('+'):
  139. n_home_rule = home_rule.replace('+', '-')
  140. bureaus_dict_rule['wq_bureau_home'] = n_home_rule
  141. if home_rule.startswith('-'):
  142. n_home_rule = home_rule.replace('-', '+')
  143. bureaus_dict_rule['wq_bureau_home'] = n_home_rule
  144. else:
  145. bureaus_dict_rule['wq_bureau_home'] = home_rule
  146. bureaus_dict['wq_bureau_home'] = bureaus[5]
  147. # bureaus_dict_rule['wq_bureau_guest'] = bureaus[3]
  148. guest_rule = bureaus[3]
  149. if guest_rule.startswith('+'):
  150. n_guest_rule = guest_rule.replace('+', '-')
  151. bureaus_dict_rule['wq_bureau_guest'] = n_guest_rule
  152. if guest_rule.startswith('-'):
  153. n_guest_rule = guest_rule.replace('-', '+')
  154. bureaus_dict_rule['wq_bureau_guest'] = n_guest_rule
  155. else:
  156. bureaus_dict_rule['wq_bureau_guest'] = guest_rule
  157. bureaus_dict['wq_bureau_guest'] = bureaus[7]
  158. except:
  159. bureaus_dict_rule['wq_bureau_home'] = ""
  160. bureaus_dict['wq_bureau_home'] = ""
  161. bureaus_dict_rule['wq_bureau_guest'] = ""
  162. bureaus_dict['wq_bureau_guest'] = ""
  163. # -----------------------------------------------------总局数:大/小------------------------------------------------------
  164. total_number_dict = {}
  165. total_number_dict_rule = {}
  166. try:
  167. total_numbers = result['o']["oufts"]["v"]
  168. total_number_dict_rule['wq_total_number_big'] = total_numbers[1]
  169. total_number_dict['wq_total_number_big'] = total_numbers[5]
  170. total_number_dict_rule['wq_total_number_small'] = total_numbers[3]
  171. total_number_dict['wq_total_number_small'] = total_numbers[7]
  172. except:
  173. total_number_dict_rule['wq_total_number_big'] = ""
  174. total_number_dict['wq_total_number_big'] = ""
  175. total_number_dict_rule['wq_total_number_small'] = ""
  176. total_number_dict['wq_total_number_small'] = ""
  177. # ------------------------------------------------------总局数:单/双-----------------------------------------------------
  178. odd_evens_dict = {}
  179. odd_evens_dict_rule = {}
  180. try:
  181. odd_evens = result['o']["oefts"]["v"]
  182. # 上半场 主队让球条件
  183. odd_evens_dict['wq_two_sides_single'] = odd_evens[1]
  184. odd_evens_dict_rule['wq_two_sides_single'] = "单"
  185. odd_evens_dict['wq_two_sides_double'] = odd_evens[3]
  186. odd_evens_dict_rule['wq_two_sides_double'] = "双"
  187. except:
  188. odd_evens_dict['wq_two_sides_single'] = ""
  189. odd_evens_dict['wq_two_sides_single'] = ""
  190. odd_evens_dict_rule['wq_two_sides_double'] = ""
  191. odd_evens_dict_rule['wq_two_sides_double'] = ""
  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['kemps_dict'] = kemps_dict
  224. # 让局
  225. item['bureaus_dict'] = bureaus_dict
  226. item['bureaus_dict_rule'] = bureaus_dict_rule
  227. # 总局数大小
  228. item['total_number_dict'] = total_number_dict
  229. item['total_number_dict_rule'] = total_number_dict_rule
  230. # 总局数单双
  231. item['odd_evens_dict'] = odd_evens_dict
  232. item['odd_evens_dict_rule'] = odd_evens_dict_rule
  233. yield item