snapshot_taobao.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import json
  2. import random
  3. import time
  4. import requests
  5. from commons.Logger import logger
  6. from commons.conn_mysql import MySQLPoolOnline, MySQLPool39
  7. from spiders.taobao.snapshot_taobao_crawl2 import TaobaoCrawl
  8. from commons.scheduler import CrawlerScheduler
  9. from commons.feishu_webhook import send_text
  10. from commons.config import TB_DEVICE_ID
  11. platform_name = "淘宝"
  12. class TaobaoMain:
  13. def __init__(self):
  14. # self.db_online = MySQLPool39()
  15. self.db_online = MySQLPoolOnline()
  16. self.crawl_count = ""
  17. self.task_id = ""
  18. self.task_dict = None
  19. self.driver = None
  20. self.cumulative_pages = 0
  21. self.cumulative_items = 0
  22. self.cumulative_stored = 0
  23. self.cumulative_skipped = 0
  24. def run(self):
  25. spider_schedule = CrawlerScheduler(TB_DEVICE_ID, 1)
  26. spider_schedule.start()
  27. time.sleep(3)
  28. while 1:
  29. print(f'not spider_schedule.end:{not spider_schedule.end}')
  30. if not spider_schedule.end:
  31. print('进入工作')
  32. self.task_dict = spider_schedule.get_task()
  33. if not self.task_dict:
  34. logger.info(f"{platform_name}暂无任务")
  35. time.sleep(35)
  36. continue
  37. print(self.task_dict)
  38. self.task_dict.update({'collect_equipment_account_id': TB_DEVICE_ID})
  39. self.crawl_count, is_success, self.driver, self.cumulative_pages, self.cumulative_items, self.cumulative_stored, self.cumulative_skipped = TaobaoCrawl(self.task_dict, spider_schedule, self.driver, self.cumulative_pages, self.cumulative_items, self.cumulative_stored, self.cumulative_skipped).run()
  40. spider_schedule.stop()
  41. else:
  42. spider_schedule.start()
  43. print('休息')
  44. time.sleep(35)
  45. time.sleep(30)
  46. if __name__ == '__main__':
  47. # 每10分钟执行一次
  48. while True:
  49. TaobaoMain().run()
  50. interval_time = random.randint(1200, 1800)
  51. logger.info(f"程序睡眠{interval_time}秒后继续执行")
  52. time.sleep(interval_time)