# -*- coding: utf-8 -*- # Author : Charley # Python : 3.12.10 # Date : 2026/8/3 15:36 import sys from mysql_pool import MySQLConnectionPool import schedule import time from deca_daily_spider import do_request from deca_daily_spider import logger def main_task(): logger.info(f"开始运行 {sys._getframe().f_code.co_name} 得卡采集任务" + "." * 40) sql_pool = MySQLConnectionPool(log=logger) if not sql_pool.check_pool_health(): logger.error("数据库连接池异常") raise RuntimeError("数据库连接池异常") try: url = "/api/v1/app/home/recommend/groupbuy/list" data = { "page": 1, "pageSize": 20, "categoryParam": 0 } response = do_request(logger, url, body=data) # print(response.json()) # print(response) if response: seen = set() dict_list = [] data_list = response.get("data", {}).get("list", []) for data in data_list: merchant = data.get("merchant", {}) merchant_name = merchant.get("merchantName", "") if merchant_name != '魔都兄弟球星卡': continue product_code = data.get("code") if product_code in seen: continue seen.add(product_code) dict_list.append({ # "merchant_user_id": merchant.get("merchantUserID", ""), "merchant_name": merchant_name, "product_code": product_code, "title": data.get("title"), "unit_price": data.get("unitPrice", 0), "card_count": data.get("cardCount", 0), "sold_count": data.get("soldCount", 0), }) sql_pool.insert_many(table="deca_track_record", data_list=dict_list) except Exception as e: logger.error(f"{sys._getframe().f_code.co_name} error: {e}") finally: logger.info(f"得卡采集 {sys._getframe().f_code.co_name} 运行结束,等待下一轮" + "." * 20) def schedule_task(): """定时任务入口:每天 09:00 与 15:00 各运行一次 main_task。""" # main_task() # 立即跑一次(调试时取消注释) schedule.every(1).minutes.do(main_task) while True: schedule.run_pending() time.sleep(1) if __name__ == '__main__': schedule_task()