guanjun.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. # -*- coding: utf-8 -*-
  2. import datetime
  3. import json
  4. import scrapy
  5. from scrapy.http import Request
  6. from .. items import Guanjun
  7. # from scrapy_redis.spiders import RedisSpider
  8. class LqguanjunSpider(scrapy.Spider):
  9. name = 'guanjun'
  10. allowed_domains = ['hg3535z.com']
  11. to_day = datetime.datetime.now()
  12. # redis_key = "guanjun: start_urls"
  13. custom_settings = {
  14. "ITEM_PIPELINES": {
  15. 'hg3535.pipeline.guanjun.Guanjunpipeline': 300,
  16. },
  17. 'LOG_LEVEL': 'DEBUG',
  18. 'LOG_FILE': "./log/guanjun_{}_{}_{}.log".format(to_day.year, to_day.month, to_day.day)
  19. }
  20. def start_requests(self):
  21. for z in range(1, 5):
  22. for x in range(0, 4):
  23. # for y in range()
  24. url = 'https://odata.yonghuai5515.com/odds6i/d/getodds/zh-cn/sid/{}/pt/1/ubt/or/pn/{}/sb/2/dc/null/pid/0'.format(z, x)
  25. yield Request(url=url, callback=self.parse, dont_filter=True)
  26. def parse(self, response):
  27. try:
  28. datas = json.loads(response.text)
  29. except:
  30. datas = ""
  31. try:
  32. results = datas['n-ot']['egs']
  33. except:
  34. results = ""
  35. try:
  36. ball = datas['n-ot']['s']['k']
  37. except:
  38. ball = ""
  39. if results:
  40. for result in results:
  41. # 联赛id
  42. league_id = result['c']['k']
  43. # 联赛名
  44. league_name = result['c']['n']
  45. new_results = result['es']
  46. for new_result in new_results:
  47. date_game = new_result['i'][4]
  48. time_game = new_result['i'][5]
  49. new_league_name = new_result['egn'].replace('\t', '')
  50. data = new_result['n-o']
  51. item = Guanjun()
  52. item['league_name'] = league_name
  53. item['new_league_name'] = new_league_name
  54. item['time_game'] = time_game
  55. item['data_game'] = date_game
  56. item['ball'] = ball
  57. item['champion_data'] = data
  58. item['league_id'] = league_id
  59. item['set_id'] = new_result['k']
  60. yield item