63 lines
1.9 KiB
Python
63 lines
1.9 KiB
Python
|
|
# coding=utf-8
|
||
|
|
import asyncio
|
||
|
|
import logging
|
||
|
|
import os
|
||
|
|
import sys
|
||
|
|
|
||
|
|
# 将项目根目录添加到 sys.path
|
||
|
|
project_root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||
|
|
if project_root not in sys.path:
|
||
|
|
sys.path.append(project_root)
|
||
|
|
|
||
|
|
from Apps.AiTeJiYiChong.Service import AiTeJiYiChongService
|
||
|
|
from Apps.AiTeJiYiChong import Opener
|
||
|
|
from Apps.AiTeJiYiChong import Crawler
|
||
|
|
|
||
|
|
# 配置日志
|
||
|
|
logging.basicConfig(
|
||
|
|
level=logging.INFO,
|
||
|
|
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
|
||
|
|
)
|
||
|
|
logger = logging.getLogger("FullProcess_AiTeJiYiChong")
|
||
|
|
|
||
|
|
async def main():
|
||
|
|
logger.info("=== 开始全流程任务 (艾特吉易充): 打开小程序 -> 爬取数据 ===")
|
||
|
|
|
||
|
|
# 步骤 0: 初始化基础服务
|
||
|
|
logger.info(">>> 步骤 0: 初始化基础服务 (数据库连接)...")
|
||
|
|
service = AiTeJiYiChongService()
|
||
|
|
await service.init_db()
|
||
|
|
|
||
|
|
try:
|
||
|
|
# 步骤 1: 打开小程序
|
||
|
|
logger.info(">>> 步骤 1: 启动 艾特吉易充 小程序...")
|
||
|
|
success = await Opener.open_mini_program()
|
||
|
|
if not success:
|
||
|
|
logger.error("❌ 无法成功打开小程序,任务终止。")
|
||
|
|
return
|
||
|
|
|
||
|
|
logger.info("✅ 小程序启动成功,等待 5 秒确保界面稳定...")
|
||
|
|
await asyncio.sleep(5)
|
||
|
|
|
||
|
|
# 步骤 2: 执行爬取任务
|
||
|
|
logger.info(">>> 步骤 2: 开始执行场站爬取任务...")
|
||
|
|
success = await Crawler.main(service=service, do_cleanup=False)
|
||
|
|
if not success:
|
||
|
|
logger.error("❌ 步骤 2 爬取任务失败。")
|
||
|
|
return
|
||
|
|
|
||
|
|
logger.info("✅ 爬取任务完成!")
|
||
|
|
|
||
|
|
except Exception as e:
|
||
|
|
logger.error(f"❌ 运行异常: {e}")
|
||
|
|
finally:
|
||
|
|
if service:
|
||
|
|
await service.close_db()
|
||
|
|
logger.info("=== 全流程任务结束 ===")
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
try:
|
||
|
|
asyncio.run(main())
|
||
|
|
except KeyboardInterrupt:
|
||
|
|
logger.info("程序被用户中断.")
|