diff --git a/gx_gp_monitor/__pycache__/main.cpython-313.pyc b/gx_gp_monitor/__pycache__/main.cpython-313.pyc index 675526b..518bc0c 100644 Binary files a/gx_gp_monitor/__pycache__/main.cpython-313.pyc and b/gx_gp_monitor/__pycache__/main.cpython-313.pyc differ diff --git a/gx_gp_monitor/core/__pycache__/logger.cpython-313.pyc b/gx_gp_monitor/core/__pycache__/logger.cpython-313.pyc index 3101f4b..5c539df 100644 Binary files a/gx_gp_monitor/core/__pycache__/logger.cpython-313.pyc and b/gx_gp_monitor/core/__pycache__/logger.cpython-313.pyc differ diff --git a/gx_gp_monitor/core/logger.py b/gx_gp_monitor/core/logger.py index 6fa1fac..5d8f31e 100644 --- a/gx_gp_monitor/core/logger.py +++ b/gx_gp_monitor/core/logger.py @@ -33,15 +33,25 @@ class ColoredFormatter(logging.Formatter): # 如果已经着色,直接返回原始格式 return super().format(record) + # 保存原始值 + original_levelname = record.levelname + original_msg = record.msg + # 添加颜色 if record.levelname in self.COLORS: # 为levelname添加颜色 - colored_levelname = f"{self.COLORS[record.levelname]}{record.levelname}{self.RESET}" - # 使用原始levelname来确定消息的颜色 - record.msg = f"{self.COLORS[record.levelname]}{record.msg}{self.RESET}" - record.levelname = colored_levelname + record.levelname = f"{self.COLORS[record.levelname]}{record.levelname}{self.RESET}" + # 为消息添加颜色 + record.msg = f"{self.COLORS[original_levelname]}{record.msg}{self.RESET}" - return super().format(record) + # 格式化 + result = super().format(record) + + # 恢复原始值,避免影响其他处理器 + record.levelname = original_levelname + record.msg = original_msg + + return result class Logger: diff --git a/gx_gp_monitor/logs/gx_gp_monitor.log b/gx_gp_monitor/logs/gx_gp_monitor.log deleted file mode 100644 index 07de661..0000000 --- a/gx_gp_monitor/logs/gx_gp_monitor.log +++ /dev/null @@ -1,858 +0,0 @@ -2026-01-07 17:16:51 - __main__ - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-07 17:16:51 - __main__ - INFO - 版本: 1.0.0 -2026-01-07 17:16:51 - __main__ - INFO - 配置文件: 默认配置 -2026-01-07 17:16:52 - core.reliability - INFO - 健康检查通过 -2026-01-07 17:16:52 - core.database - INFO - 数据库连接池初始化成功 -2026-01-07 17:16:52 - core.database - INFO - 开始初始化数据库表结构 -2026-01-07 17:16:52 - core.database - INFO - 数据库表结构初始化完成 -2026-01-07 17:16:52 - storage.postgresql - INFO - 存储初始化完成 -2026-01-07 17:16:52 - __main__ - INFO - 应用初始化完成 -2026-01-07 17:16:52 - scheduler.scheduler - INFO - 添加定时任务: daily_crawl (0 8,14,18 * * *) -2026-01-07 17:16:52 - scheduler.scheduler - INFO - 添加定时任务: data_cleanup (0 2 * * *) -2026-01-07 17:20:31 - __main__ - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-07 17:20:31 - __main__ - INFO - 版本: 1.0.0 -2026-01-07 17:20:31 - __main__ - INFO - 配置文件: 默认配置 -2026-01-07 17:20:31 - core.reliability - INFO - 健康检查通过 -2026-01-07 17:20:31 - core.database - INFO - 数据库连接池初始化成功 -2026-01-07 17:20:31 - core.database - INFO - 开始初始化数据库表结构 -2026-01-07 17:20:31 - core.database - INFO - 数据库表结构初始化完成 -2026-01-07 17:20:31 - storage.postgresql - INFO - 存储初始化完成 -2026-01-07 17:20:31 - __main__ - INFO - 应用初始化完成 -2026-01-07 17:20:31 - scheduler.scheduler - INFO - 添加定时任务: daily_crawl (0 8,14,18 * * *) -2026-01-07 17:20:31 - scheduler.scheduler - INFO - 添加定时任务: data_cleanup (0 2 * * *) -2026-01-07 17:21:02 - __main__ - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-07 17:21:02 - __main__ - INFO - 版本: 1.0.0 -2026-01-07 17:21:02 - __main__ - INFO - 配置文件: 默认配置 -2026-01-07 17:21:02 - core.reliability - INFO - 健康检查通过 -2026-01-07 17:21:02 - core.database - INFO - 数据库连接池初始化成功 -2026-01-07 17:21:02 - core.database - INFO - 开始初始化数据库表结构 -2026-01-07 17:21:02 - core.database - INFO - 数据库表结构初始化完成 -2026-01-07 17:21:02 - storage.postgresql - INFO - 存储初始化完成 -2026-01-07 17:21:02 - __main__ - INFO - 应用初始化完成 -2026-01-07 17:21:02 - scheduler.scheduler - INFO - 添加定时任务: daily_crawl (0 8,14,18 * * *) -2026-01-07 17:21:02 - scheduler.scheduler - INFO - 添加定时任务: data_cleanup (0 2 * * *) -2026-01-07 17:22:10 - __main__ - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-07 17:22:10 - __main__ - INFO - 版本: 1.0.0 -2026-01-07 17:22:10 - __main__ - INFO - 配置文件: 默认配置 -2026-01-07 17:22:10 - core.reliability - INFO - 健康检查通过 -2026-01-07 17:22:10 - core.database - INFO - 数据库连接池初始化成功 -2026-01-07 17:22:10 - core.database - INFO - 开始初始化数据库表结构 -2026-01-07 17:22:10 - core.database - INFO - 数据库表结构初始化完成 -2026-01-07 17:22:10 - storage.postgresql - INFO - 存储初始化完成 -2026-01-07 17:22:10 - __main__ - INFO - 应用初始化完成 -2026-01-07 17:22:10 - scheduler.scheduler - INFO - 添加定时任务: daily_crawl (0 8,14,18 * * *) -2026-01-07 17:22:10 - scheduler.scheduler - INFO - 添加定时任务: data_cleanup (0 2 * * *) -2026-01-07 17:22:44 - __main__ - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-07 17:22:44 - __main__ - INFO - 版本: 1.0.0 -2026-01-07 17:22:44 - __main__ - INFO - 配置文件: 默认配置 -2026-01-07 17:22:44 - core.reliability - INFO - 健康检查通过 -2026-01-07 17:22:44 - core.database - INFO - 数据库连接池初始化成功 -2026-01-07 17:22:44 - core.database - INFO - 开始初始化数据库表结构 -2026-01-07 17:22:44 - core.database - INFO - 数据库表结构初始化完成 -2026-01-07 17:22:44 - storage.postgresql - INFO - 存储初始化完成 -2026-01-07 17:22:44 - __main__ - INFO - 应用初始化完成 -2026-01-07 17:22:44 - scheduler.scheduler - INFO - 添加定时任务: daily_crawl (0 8,14,18 * * *) -2026-01-07 17:22:44 - scheduler.scheduler - INFO - 添加定时任务: data_cleanup (0 2 * * *) -2026-01-07 17:22:46 - __main__ - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-07 17:22:46 - __main__ - INFO - 版本: 1.0.0 -2026-01-07 17:22:46 - __main__ - INFO - 配置文件: 默认配置 -2026-01-07 17:22:47 - core.reliability - INFO - 健康检查通过 -2026-01-07 17:22:47 - core.database - INFO - 数据库连接池初始化成功 -2026-01-07 17:22:47 - core.database - INFO - 开始初始化数据库表结构 -2026-01-07 17:22:47 - core.database - INFO - 数据库表结构初始化完成 -2026-01-07 17:22:47 - storage.postgresql - INFO - 存储初始化完成 -2026-01-07 17:22:47 - __main__ - INFO - 应用初始化完成 -2026-01-07 17:22:47 - __main__ - INFO - 开始执行爬取任务 -2026-01-07 17:22:47 - crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-07 17:22:47 - crawler.spider - ERROR - 爬取来源 采购公告 时发生未预期错误: 'Logger' object has no attribute 'log_crawl_start' -2026-01-07 17:22:47 - crawler.spider - ERROR - 爬取来源 结果公告 时发生未预期错误: 'Logger' object has no attribute 'log_crawl_start' -2026-01-07 17:22:47 - crawler.spider - ERROR - 爬取来源 合同公告 时发生未预期错误: 'Logger' object has no attribute 'log_crawl_start' -2026-01-07 17:22:47 - crawler.spider - ERROR - 爬取来源 更正公告 时发生未预期错误: 'Logger' object has no attribute 'log_crawl_start' -2026-01-07 17:22:47 - crawler.spider - ERROR - 爬取来源 招标文件预公示 时发生未预期错误: 'Logger' object has no attribute 'log_crawl_start' -2026-01-07 17:22:47 - crawler.spider - ERROR - 爬取来源 单一来源公示 时发生未预期错误: 'Logger' object has no attribute 'log_crawl_start' -2026-01-07 17:22:47 - crawler.spider - ERROR - 爬取来源 电子卖场公示 时发生未预期错误: 'Logger' object has no attribute 'log_crawl_start' -2026-01-07 17:22:47 - crawler.spider - ERROR - 爬取来源 履约验收公示 时发生未预期错误: 'Logger' object has no attribute 'log_crawl_start' -2026-01-07 17:22:47 - crawler.spider - ERROR - 爬取来源 工程类公告 时发生未预期错误: 'Logger' object has no attribute 'log_crawl_start' -2026-01-07 17:22:47 - crawler.spider - ERROR - 爬取来源 框架协议征集公告 时发生未预期错误: 'Logger' object has no attribute 'log_crawl_start' -2026-01-07 17:22:47 - crawler.spider - ERROR - 爬取来源 框架协议入围结果公告 时发生未预期错误: 'Logger' object has no attribute 'log_crawl_start' -2026-01-07 17:22:47 - crawler.spider - ERROR - 爬取来源 框架协议成交结果汇总公告 时发生未预期错误: 'Logger' object has no attribute 'log_crawl_start' -2026-01-07 17:22:47 - crawler.spider - ERROR - 爬取来源 采购意向公开 时发生未预期错误: 'Logger' object has no attribute 'log_crawl_start' -2026-01-07 17:22:47 - crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 0 个,失败 13 个,获取 0 条公告 -2026-01-07 17:22:47 - __main__ - INFO - 爬取到 0 条原始公告 -2026-01-07 17:22:47 - __main__ - ERROR - 爬取任务执行失败: attempted relative import beyond top-level package -2026-01-07 17:22:47 - scheduler.scheduler - INFO - 添加定时任务: daily_crawl (0 8,14,18 * * *) -2026-01-07 17:22:47 - scheduler.scheduler - INFO - 添加定时任务: data_cleanup (0 2 * * *) -2026-01-07 17:23:10 - __main__ - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-07 17:23:10 - __main__ - INFO - 版本: 1.0.0 -2026-01-07 17:23:10 - __main__ - INFO - 配置文件: 默认配置 -2026-01-07 17:23:10 - core.reliability - INFO - 健康检查通过 -2026-01-07 17:23:10 - core.database - INFO - 数据库连接池初始化成功 -2026-01-07 17:23:10 - core.database - INFO - 开始初始化数据库表结构 -2026-01-07 17:23:10 - core.database - INFO - 数据库表结构初始化完成 -2026-01-07 17:23:10 - storage.postgresql - INFO - 存储初始化完成 -2026-01-07 17:23:10 - __main__ - INFO - 应用初始化完成 -2026-01-07 17:23:10 - __main__ - INFO - 开始执行爬取任务 -2026-01-07 17:23:10 - crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-07 17:23:10 - crawler.spider - ERROR - 爬取来源 采购公告 时发生未预期错误: attempted relative import beyond top-level package -2026-01-07 17:23:10 - crawler.spider - ERROR - 爬取来源 结果公告 时发生未预期错误: attempted relative import beyond top-level package -2026-01-07 17:23:10 - crawler.spider - ERROR - 爬取来源 合同公告 时发生未预期错误: attempted relative import beyond top-level package -2026-01-07 17:23:10 - crawler.spider - ERROR - 爬取来源 更正公告 时发生未预期错误: attempted relative import beyond top-level package -2026-01-07 17:23:10 - crawler.spider - ERROR - 爬取来源 招标文件预公示 时发生未预期错误: attempted relative import beyond top-level package -2026-01-07 17:23:10 - crawler.spider - ERROR - 爬取来源 单一来源公示 时发生未预期错误: attempted relative import beyond top-level package -2026-01-07 17:23:10 - crawler.spider - ERROR - 爬取来源 电子卖场公示 时发生未预期错误: attempted relative import beyond top-level package -2026-01-07 17:23:10 - crawler.spider - ERROR - 爬取来源 履约验收公示 时发生未预期错误: attempted relative import beyond top-level package -2026-01-07 17:23:10 - crawler.spider - ERROR - 爬取来源 工程类公告 时发生未预期错误: attempted relative import beyond top-level package -2026-01-07 17:23:10 - crawler.spider - ERROR - 爬取来源 框架协议征集公告 时发生未预期错误: attempted relative import beyond top-level package -2026-01-07 17:23:10 - crawler.spider - ERROR - 爬取来源 框架协议入围结果公告 时发生未预期错误: attempted relative import beyond top-level package -2026-01-07 17:23:10 - crawler.spider - ERROR - 爬取来源 框架协议成交结果汇总公告 时发生未预期错误: attempted relative import beyond top-level package -2026-01-07 17:23:10 - crawler.spider - ERROR - 爬取来源 采购意向公开 时发生未预期错误: attempted relative import beyond top-level package -2026-01-07 17:23:10 - crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 0 个,失败 13 个,获取 0 条公告 -2026-01-07 17:23:10 - __main__ - INFO - 爬取到 0 条原始公告 -2026-01-07 17:23:10 - __main__ - ERROR - 爬取任务执行失败: attempted relative import beyond top-level package -2026-01-07 17:23:10 - scheduler.scheduler - INFO - 添加定时任务: daily_crawl (0 8,14,18 * * *) -2026-01-07 17:23:10 - scheduler.scheduler - INFO - 添加定时任务: data_cleanup (0 2 * * *) -2026-01-07 17:23:34 - __main__ - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-07 17:23:34 - __main__ - INFO - 版本: 1.0.0 -2026-01-07 17:23:34 - __main__ - INFO - 配置文件: 默认配置 -2026-01-07 17:23:35 - core.reliability - INFO - 健康检查通过 -2026-01-07 17:23:35 - core.database - INFO - 数据库连接池初始化成功 -2026-01-07 17:23:35 - core.database - INFO - 开始初始化数据库表结构 -2026-01-07 17:23:35 - core.database - INFO - 数据库表结构初始化完成 -2026-01-07 17:23:35 - storage.postgresql - INFO - 存储初始化完成 -2026-01-07 17:23:35 - __main__ - INFO - 应用初始化完成 -2026-01-07 17:23:35 - __main__ - INFO - 开始执行爬取任务 -2026-01-07 17:23:35 - crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-07 17:23:35 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-07 17:24:05 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:05 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:05 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:05 - crawler.parsers - INFO - 成功解析 97/100 条公告记录 -2026-01-07 17:24:05 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 97 条公告,耗时 30.46秒 -2026-01-07 17:24:05 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-07 17:24:05 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:24:05 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-07 17:24:05 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-07 17:24:06 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:24:06 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-07 17:24:06 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-07 17:24:06 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:24:06 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-07 17:24:06 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - INFO - 成功解析 78/100 条公告记录 -2026-01-07 17:24:06 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 78 条公告,耗时 0.17秒 -2026-01-07 17:24:06 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:06 - crawler.parsers - INFO - 成功解析 0/100 条公告记录 -2026-01-07 17:24:06 - crawler.spider - INFO - 单一来源公示 第1页解析到0条公告 -2026-01-07 17:24:06 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 0 条公告,耗时 0.18秒 -2026-01-07 17:24:06 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-07 17:24:06 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:24:06 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.31秒 -2026-01-07 17:24:06 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-07 17:24:07 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:24:07 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-07 17:24:07 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-07 17:24:07 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:24:07 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.27秒 -2026-01-07 17:24:07 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - INFO - 成功解析 62/100 条公告记录 -2026-01-07 17:24:07 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 62 条公告,耗时 0.20秒 -2026-01-07 17:24:07 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:07 - crawler.parsers - INFO - 成功解析 13/100 条公告记录 -2026-01-07 17:24:07 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 13 条公告,耗时 0.17秒 -2026-01-07 17:24:07 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - ERROR - 解析单个公告记录失败: 'NoneType' object has no attribute 'strip' -2026-01-07 17:24:08 - crawler.parsers - INFO - 成功解析 0/100 条公告记录 -2026-01-07 17:24:08 - crawler.spider - INFO - 框架协议成交结果汇总公告 第1页解析到0条公告 -2026-01-07 17:24:08 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 0 条公告,耗时 0.29秒 -2026-01-07 17:24:08 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-07 17:24:08 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:24:08 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-07 17:24:08 - crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 950 条公告 -2026-01-07 17:24:08 - __main__ - INFO - 爬取到 950 条原始公告 -2026-01-07 17:24:08 - __main__ - ERROR - 爬取任务执行失败: attempted relative import beyond top-level package -2026-01-07 17:24:08 - scheduler.scheduler - INFO - 添加定时任务: daily_crawl (0 8,14,18 * * *) -2026-01-07 17:24:08 - scheduler.scheduler - INFO - 添加定时任务: data_cleanup (0 2 * * *) -2026-01-07 17:24:17 - __main__ - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-07 17:24:17 - __main__ - INFO - 版本: 1.0.0 -2026-01-07 17:24:17 - __main__ - INFO - 配置文件: 默认配置 -2026-01-07 17:24:17 - core.reliability - INFO - 健康检查通过 -2026-01-07 17:24:17 - core.database - INFO - 数据库连接池初始化成功 -2026-01-07 17:24:17 - core.database - INFO - 开始初始化数据库表结构 -2026-01-07 17:24:17 - core.database - INFO - 数据库表结构初始化完成 -2026-01-07 17:24:17 - storage.postgresql - INFO - 存储初始化完成 -2026-01-07 17:24:17 - __main__ - INFO - 应用初始化完成 -2026-01-07 17:24:17 - scheduler.scheduler - INFO - 添加定时任务: daily_crawl (0 8,14,18 * * *) -2026-01-07 17:24:17 - scheduler.scheduler - INFO - 添加定时任务: data_cleanup (0 2 * * *) -2026-01-07 17:26:34 - __main__ - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-07 17:26:34 - __main__ - INFO - 版本: 1.0.0 -2026-01-07 17:26:34 - __main__ - INFO - 配置文件: 默认配置 -2026-01-07 17:26:34 - core.reliability - INFO - 健康检查通过 -2026-01-07 17:26:34 - core.database - INFO - 数据库连接池初始化成功 -2026-01-07 17:26:34 - core.database - INFO - 开始初始化数据库表结构 -2026-01-07 17:26:34 - core.database - INFO - 数据库表结构初始化完成 -2026-01-07 17:26:34 - storage.postgresql - INFO - 存储初始化完成 -2026-01-07 17:26:34 - __main__ - INFO - 应用初始化完成 -2026-01-07 17:26:34 - __main__ - INFO - 开始执行爬取任务 -2026-01-07 17:26:34 - crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-07 17:26:34 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-07 17:26:34 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:26:34 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 0.48秒 -2026-01-07 17:26:34 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-07 17:26:35 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:26:35 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-07 17:26:35 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-07 17:26:35 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:26:35 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-07 17:26:35 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-07 17:26:35 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:26:35 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-07 17:26:35 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-07 17:26:35 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:26:35 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-07 17:26:35 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-07 17:26:35 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:26:35 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-07 17:26:35 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-07 17:26:36 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:26:36 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.40秒 -2026-01-07 17:26:36 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-07 17:26:36 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:26:36 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.22秒 -2026-01-07 17:26:36 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-07 17:26:36 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:26:36 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.27秒 -2026-01-07 17:26:36 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-07 17:26:36 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:26:36 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-07 17:26:36 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-07 17:26:37 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:26:37 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.25秒 -2026-01-07 17:26:37 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-07 17:26:37 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:26:37 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-07 17:26:37 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-07 17:26:37 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:26:37 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-07 17:26:37 - crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-07 17:26:37 - __main__ - INFO - 爬取到 1300 条原始公告 -2026-01-07 17:26:37 - __main__ - ERROR - 爬取任务执行失败: attempted relative import beyond top-level package -2026-01-07 17:26:37 - scheduler.scheduler - INFO - 添加定时任务: daily_crawl (0 8,14,18 * * *) -2026-01-07 17:26:37 - scheduler.scheduler - INFO - 添加定时任务: data_cleanup (0 2 * * *) -2026-01-07 17:26:57 - __main__ - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-07 17:26:57 - __main__ - INFO - 版本: 1.0.0 -2026-01-07 17:26:57 - __main__ - INFO - 配置文件: 默认配置 -2026-01-07 17:26:58 - core.reliability - INFO - 健康检查通过 -2026-01-07 17:26:58 - core.database - INFO - 数据库连接池初始化成功 -2026-01-07 17:26:58 - core.database - INFO - 开始初始化数据库表结构 -2026-01-07 17:26:58 - core.database - INFO - 数据库表结构初始化完成 -2026-01-07 17:26:58 - storage.postgresql - INFO - 存储初始化完成 -2026-01-07 17:26:58 - __main__ - INFO - 应用初始化完成 -2026-01-07 17:26:58 - __main__ - INFO - 开始执行爬取任务 -2026-01-07 17:26:58 - crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-07 17:26:58 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-07 17:26:58 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:26:58 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 0.37秒 -2026-01-07 17:26:58 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-07 17:26:58 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:26:58 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-07 17:26:58 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-07 17:26:58 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:26:58 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-07 17:26:58 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-07 17:26:59 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:26:59 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-07 17:26:59 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-07 17:26:59 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:26:59 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-07 17:26:59 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-07 17:26:59 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:26:59 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-07 17:26:59 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-07 17:26:59 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:26:59 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.38秒 -2026-01-07 17:26:59 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-07 17:26:59 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:26:59 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-07 17:26:59 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-07 17:27:00 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:27:00 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.25秒 -2026-01-07 17:27:00 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-07 17:27:00 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:27:00 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-07 17:27:00 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-07 17:27:00 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:27:00 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.17秒 -2026-01-07 17:27:00 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-07 17:27:00 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:27:00 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-07 17:27:00 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-07 17:27:01 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:27:01 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.25秒 -2026-01-07 17:27:01 - crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-07 17:27:01 - __main__ - INFO - 爬取到 1300 条原始公告 -2026-01-07 17:27:01 - filters.filters - INFO - 来源筛选: 1300 -> 1300 条公告 -2026-01-07 17:27:01 - filters.filters - INFO - 关键词筛选: 1300 -> 18 条公告 -2026-01-07 17:27:01 - filters.filters - INFO - 筛选完成: 总数 1300 -> 筛选后 18 (关键词: 1282, 日期: 0, 去重: 0, 来源: 0) -2026-01-07 17:27:01 - __main__ - INFO - 筛选后剩余 18 条公告 -2026-01-07 17:27:01 - storage.postgresql - INFO - 开始保存 18 条公告到数据库 -2026-01-07 17:27:01 - core.database - INFO - 批量保存公告完成,成功保存 1 条 -2026-01-07 17:27:01 - storage.postgresql - INFO - 成功保存 1 条公告到数据库 -2026-01-07 17:27:01 - storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 18 条公告) -2026-01-07 17:27:01 - notification.wechat - INFO - 企业微信服务初始化完成 -2026-01-07 17:27:01 - notification.wechat - INFO - 成功获取企业微信访问令牌 -2026-01-07 17:27:01 - notification.wechat - INFO - Markdown消息发送成功 -2026-01-07 17:27:01 - __main__ - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 18, 'saved': 1, 'markdown_generated': True, 'notification_sent': True, 'filter_stats': {'keyword_filtered': 1282, 'date_filtered': 0, 'duplicate_filtered': 0, 'source_filtered': 0}} -2026-01-07 17:27:01 - scheduler.scheduler - INFO - 添加定时任务: daily_crawl (0 8,14,18 * * *) -2026-01-07 17:27:01 - scheduler.scheduler - INFO - 添加定时任务: data_cleanup (0 2 * * *) -2026-01-07 17:29:05 - __main__ - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-07 17:29:05 - __main__ - INFO - 版本: 1.0.0 -2026-01-07 17:29:05 - __main__ - INFO - 配置文件: 默认配置 -2026-01-07 17:29:06 - core.reliability - INFO - 健康检查通过 -2026-01-07 17:29:06 - core.database - INFO - 数据库连接池初始化成功 -2026-01-07 17:29:06 - core.database - INFO - 开始初始化数据库表结构 -2026-01-07 17:29:06 - core.database - INFO - 数据库表结构初始化完成 -2026-01-07 17:29:06 - storage.postgresql - INFO - 存储初始化完成 -2026-01-07 17:29:06 - __main__ - INFO - 应用初始化完成 -2026-01-07 17:29:06 - scheduler.scheduler - INFO - 添加定时任务: daily_crawl (0 8,14,18 * * *) -2026-01-07 17:29:06 - scheduler.scheduler - INFO - 添加定时任务: data_cleanup (0 2 * * *) -2026-01-07 17:31:58 - __main__ - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-07 17:31:58 - __main__ - INFO - 版本: 1.0.0 -2026-01-07 17:31:58 - __main__ - INFO - 配置文件: 默认配置 -2026-01-07 17:31:58 - core.reliability - INFO - 健康检查通过 -2026-01-07 17:31:58 - core.database - INFO - 数据库连接池初始化成功 -2026-01-07 17:31:58 - core.database - INFO - 开始初始化数据库表结构 -2026-01-07 17:31:58 - core.database - INFO - 数据库表结构初始化完成 -2026-01-07 17:31:58 - storage.postgresql - INFO - 存储初始化完成 -2026-01-07 17:31:58 - __main__ - INFO - 应用初始化完成 -2026-01-07 17:34:32 - __main__ - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-07 17:34:32 - __main__ - INFO - 版本: 1.0.0 -2026-01-07 17:34:32 - __main__ - INFO - 配置文件: 默认配置 -2026-01-07 17:34:32 - core.reliability - INFO - 健康检查通过 -2026-01-07 17:34:32 - core.database - INFO - 数据库连接池初始化成功 -2026-01-07 17:34:32 - core.database - INFO - 开始初始化数据库表结构 -2026-01-07 17:34:32 - core.database - INFO - 数据库表结构初始化完成 -2026-01-07 17:34:32 - storage.postgresql - INFO - 存储初始化完成 -2026-01-07 17:34:32 - __main__ - INFO - 应用初始化完成 -2026-01-07 17:34:35 - __main__ - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-07 17:34:35 - __main__ - INFO - 版本: 1.0.0 -2026-01-07 17:34:35 - __main__ - INFO - 配置文件: 默认配置 -2026-01-07 17:34:35 - core.reliability - INFO - 健康检查通过 -2026-01-07 17:34:35 - core.database - INFO - 数据库连接池初始化成功 -2026-01-07 17:34:35 - core.database - INFO - 开始初始化数据库表结构 -2026-01-07 17:34:35 - core.database - INFO - 数据库表结构初始化完成 -2026-01-07 17:34:35 - storage.postgresql - INFO - 存储初始化完成 -2026-01-07 17:34:35 - __main__ - INFO - 应用初始化完成 -2026-01-07 17:34:35 - __main__ - INFO - 开始执行爬取任务 -2026-01-07 17:34:35 - crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-07 17:34:35 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-07 17:35:05 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:35:05 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 30.44秒 -2026-01-07 17:35:05 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-07 17:35:06 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:35:06 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.26秒 -2026-01-07 17:35:06 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-07 17:35:06 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:35:06 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-07 17:35:06 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-07 17:35:06 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:35:06 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-07 17:35:06 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-07 17:35:06 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:35:06 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-07 17:35:06 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-07 17:35:07 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:35:07 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-07 17:35:07 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-07 17:35:07 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:35:07 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.34秒 -2026-01-07 17:35:07 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-07 17:35:07 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:35:07 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-07 17:35:07 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-07 17:35:07 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:35:07 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-07 17:35:07 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-07 17:35:07 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:35:07 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-07 17:35:07 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-07 17:35:08 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:35:08 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-07 17:35:08 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-07 17:35:08 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:35:08 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.25秒 -2026-01-07 17:35:08 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-07 17:35:08 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:35:08 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-07 17:35:08 - crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-07 17:35:08 - __main__ - INFO - 爬取到 1300 条原始公告 -2026-01-07 17:35:08 - filters.filters - INFO - 来源筛选: 1300 -> 1300 条公告 -2026-01-07 17:35:08 - filters.filters - INFO - 去重筛选: 移除了 18 条重复公告 -2026-01-07 17:35:08 - filters.filters - INFO - 关键词筛选: 1282 -> 0 条公告 -2026-01-07 17:35:08 - filters.filters - INFO - 筛选完成: 总数 1300 -> 筛选后 0 (关键词: 1282, 日期: 0, 去重: 18, 来源: 0) -2026-01-07 17:35:08 - __main__ - INFO - 筛选后剩余 0 条公告 -2026-01-07 17:35:08 - storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 0 条公告) -2026-01-07 17:35:08 - __main__ - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 0, 'saved': 0, 'markdown_generated': True, 'notification_sent': False, 'filter_stats': {'keyword_filtered': 1282, 'date_filtered': 0, 'duplicate_filtered': 18, 'source_filtered': 0}} -2026-01-07 17:35:38 - __main__ - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-07 17:35:38 - __main__ - INFO - 版本: 1.0.0 -2026-01-07 17:35:38 - __main__ - INFO - 配置文件: 默认配置 -2026-01-07 17:35:38 - core.reliability - INFO - 健康检查通过 -2026-01-07 17:35:38 - core.database - INFO - 数据库连接池初始化成功 -2026-01-07 17:35:38 - core.database - INFO - 开始初始化数据库表结构 -2026-01-07 17:35:38 - core.database - INFO - 数据库表结构初始化完成 -2026-01-07 17:35:38 - storage.postgresql - INFO - 存储初始化完成 -2026-01-07 17:35:38 - __main__ - INFO - 应用初始化完成 -2026-01-07 17:35:38 - __main__ - INFO - 开始执行爬取任务 -2026-01-07 17:35:38 - crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-07 17:35:38 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-07 17:36:09 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:36:09 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 30.49秒 -2026-01-07 17:36:09 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-07 17:36:09 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:36:09 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-07 17:36:09 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-07 17:36:09 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:36:09 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-07 17:36:09 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-07 17:36:09 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:36:09 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.27秒 -2026-01-07 17:36:09 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-07 17:36:10 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:36:10 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.28秒 -2026-01-07 17:36:10 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-07 17:36:10 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:36:10 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-07 17:36:10 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-07 17:36:10 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:36:10 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.36秒 -2026-01-07 17:36:10 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-07 17:36:11 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:36:11 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.27秒 -2026-01-07 17:36:11 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-07 17:36:11 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:36:11 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.21秒 -2026-01-07 17:36:11 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-07 17:36:11 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:36:11 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.15秒 -2026-01-07 17:36:11 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-07 17:36:11 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:36:11 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.24秒 -2026-01-07 17:36:11 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-07 17:36:11 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:36:11 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-07 17:36:11 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-07 17:36:11 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-07 17:36:11 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-07 17:36:11 - crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-07 17:36:11 - __main__ - INFO - 爬取到 1300 条原始公告 -2026-01-07 17:36:11 - filters.filters - INFO - 来源筛选: 1300 -> 1300 条公告 -2026-01-07 17:36:12 - filters.filters - INFO - 去重筛选: 移除了 18 条重复公告 -2026-01-07 17:36:12 - filters.filters - INFO - 关键词筛选: 1282 -> 0 条公告 -2026-01-07 17:36:12 - filters.filters - INFO - 筛选完成: 总数 1300 -> 筛选后 0 (关键词: 1282, 日期: 0, 去重: 18, 来源: 0) -2026-01-07 17:36:12 - __main__ - INFO - 筛选后剩余 0 条公告 -2026-01-07 17:36:12 - storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 0 条公告) -2026-01-07 17:36:12 - __main__ - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 0, 'saved': 0, 'markdown_generated': True, 'notification_sent': False, 'filter_stats': {'keyword_filtered': 1282, 'date_filtered': 0, 'duplicate_filtered': 18, 'source_filtered': 0}} -2026-01-08 08:17:30 - __main__ - INFO - === 广西政府采购网公告监控系统启动 === -2026-01-08 08:17:30 - __main__ - INFO - 版本: 1.0.0 -2026-01-08 08:17:30 - __main__ - INFO - 配置文件: 默认配置 -2026-01-08 08:17:30 - core.reliability - INFO - 健康检查通过 -2026-01-08 08:17:30 - core.database - INFO - 数据库连接池初始化成功 -2026-01-08 08:17:30 - core.database - INFO - 开始初始化数据库表结构 -2026-01-08 08:17:30 - core.database - INFO - 数据库表结构初始化完成 -2026-01-08 08:17:30 - storage.postgresql - INFO - 存储初始化完成 -2026-01-08 08:17:30 - __main__ - INFO - 应用初始化完成 -2026-01-08 08:17:30 - __main__ - INFO - 开始执行爬取任务 -2026-01-08 08:17:30 - crawler.spider - INFO - 开始爬取 13 个公告来源 -2026-01-08 08:17:30 - gx_gp_monitor - INFO - 开始爬取 采购公告 -2026-01-08 08:17:31 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 08:17:31 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 0.53秒 -2026-01-08 08:17:31 - gx_gp_monitor - INFO - 开始爬取 结果公告 -2026-01-08 08:17:31 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 08:17:31 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 08:17:31 - gx_gp_monitor - INFO - 开始爬取 合同公告 -2026-01-08 08:17:31 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 08:17:31 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.20秒 -2026-01-08 08:17:31 - gx_gp_monitor - INFO - 开始爬取 更正公告 -2026-01-08 08:17:31 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 08:17:31 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.28秒 -2026-01-08 08:17:31 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 -2026-01-08 08:17:31 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 08:17:31 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 08:17:31 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 -2026-01-08 08:17:32 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 08:17:32 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 08:17:32 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 -2026-01-08 08:17:32 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 08:17:32 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.34秒 -2026-01-08 08:17:32 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 -2026-01-08 08:17:32 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 08:17:32 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.48秒 -2026-01-08 08:17:32 - gx_gp_monitor - INFO - 开始爬取 工程类公告 -2026-01-08 08:17:33 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 08:17:33 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 08:17:33 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 -2026-01-08 08:17:33 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 08:17:33 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.18秒 -2026-01-08 08:17:33 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 -2026-01-08 08:17:33 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 08:17:33 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.23秒 -2026-01-08 08:17:33 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 -2026-01-08 08:17:33 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 08:17:33 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.16秒 -2026-01-08 08:17:33 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 -2026-01-08 08:17:33 - crawler.parsers - INFO - 成功解析 100/100 条公告记录 -2026-01-08 08:17:33 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.19秒 -2026-01-08 08:17:33 - crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 -2026-01-08 08:17:33 - __main__ - INFO - 爬取到 1300 条原始公告 -2026-01-08 08:17:33 - filters.filters - INFO - 来源筛选: 1300 -> 1300 条公告 -2026-01-08 08:17:34 - filters.filters - INFO - 去重筛选: 移除了 17 条重复公告 -2026-01-08 08:17:34 - filters.filters - INFO - 关键词筛选: 1283 -> 0 条公告 -2026-01-08 08:17:34 - filters.filters - INFO - 筛选完成: 总数 1300 -> 筛选后 0 (关键词: 1283, 日期: 0, 去重: 17, 来源: 0) -2026-01-08 08:17:34 - __main__ - INFO - 筛选后剩余 0 条公告 -2026-01-08 08:17:34 - storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 0 条公告) -2026-01-08 08:17:34 - __main__ - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 0, 'saved': 0, 'markdown_generated': True, 'notification_sent': False, 'filter_stats': {'keyword_filtered': 1283, 'date_filtered': 0, 'duplicate_filtered': 17, 'source_filtered': 0}} diff --git a/gx_gp_monitor/main.py b/gx_gp_monitor/main.py index f88620d..e30c7f0 100644 --- a/gx_gp_monitor/main.py +++ b/gx_gp_monitor/main.py @@ -8,6 +8,7 @@ import sys import argparse import signal from pathlib import Path +from typing import Dict, Any # 添加项目根目录到Python路径 project_root = Path(__file__).parent diff --git a/gx_gp_monitor/onu.md b/gx_gp_monitor/onu.md deleted file mode 100644 index 4ec5d86..0000000 --- a/gx_gp_monitor/onu.md +++ /dev/null @@ -1,11 +0,0 @@ -# 广西政府采购网公告监控 - -**更新时间**: 2026-01-08 08:17:34 - -## 无新公告 - -当前时间范围内没有找到符合条件的公告。 - ---- - -*由广西政府采购网公告监控系统生成* \ No newline at end of file diff --git a/gx_gp_monitor/wechat/__pycache__/callback_server.cpython-313.pyc b/gx_gp_monitor/wechat/__pycache__/callback_server.cpython-313.pyc index abe31e7..f4fe0a7 100644 Binary files a/gx_gp_monitor/wechat/__pycache__/callback_server.cpython-313.pyc and b/gx_gp_monitor/wechat/__pycache__/callback_server.cpython-313.pyc differ diff --git a/gx_gp_monitor/wechat/__pycache__/message_handler.cpython-313.pyc b/gx_gp_monitor/wechat/__pycache__/message_handler.cpython-313.pyc index 6a934b9..daa403e 100644 Binary files a/gx_gp_monitor/wechat/__pycache__/message_handler.cpython-313.pyc and b/gx_gp_monitor/wechat/__pycache__/message_handler.cpython-313.pyc differ diff --git a/logs/gx_gp_monitor.log b/logs/gx_gp_monitor.log index 4b4826d..117ddc8 100644 --- a/logs/gx_gp_monitor.log +++ b/logs/gx_gp_monitor.log @@ -1,73 +1,480 @@ -2026-01-08 16:09:12 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 16:09:12 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 16:09:12 - gx_gp_monitor.wechat.callback_server - INFO - 企业微信回调服务器初始化完成 -2026-01-08 16:09:12 - gx_gp_monitor.wechat.callback_server - INFO - 企业微信回调服务器初始化完成 -2026-01-08 16:09:12 - __main__ - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 16:09:12 - gx_gp_monitor.wechat.callback_server - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 16:09:12 - gx_gp_monitor.wechat.callback_server - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 16:10:09 - gx_gp_monitor.wechat.callback_server - ERROR - ✅ XML解析成功,提取的encrypt长度: 472 -2026-01-08 16:10:09 - gx_gp_monitor.wechat.callback_server - ERROR - ✅ XML解析成功,提取的encrypt长度: 472 -2026-01-08 16:10:09 - gx_gp_monitor.wechat.callback_server - ERROR - 提取的encrypt前50字符: nOqa7BvniBu/CTR8JQPjeuM8lpsRIIBl/3TfIsGT1wIew7TLR1... -2026-01-08 16:10:09 - gx_gp_monitor.wechat.callback_server - ERROR - 提取的encrypt前50字符: nOqa7BvniBu/CTR8JQPjeuM8lpsRIIBl/3TfIsGT1wIew7TLR1... -2026-01-08 16:10:09 - gx_gp_monitor.wechat.callback_server - ERROR - 计算的签名: a6c720a899fe1ad640cd70d8f9c9ea0dacb94e31 -2026-01-08 16:10:09 - gx_gp_monitor.wechat.callback_server - ERROR - 计算的签名: a6c720a899fe1ad640cd70d8f9c9ea0dacb94e31 -2026-01-08 16:10:09 - gx_gp_monitor.wechat.callback_server - ERROR - 接收的签名: a6c720a899fe1ad640cd70d8f9c9ea0dacb94e31 -2026-01-08 16:10:09 - gx_gp_monitor.wechat.callback_server - ERROR - 接收的签名: a6c720a899fe1ad640cd70d8f9c9ea0dacb94e31 -2026-01-08 16:10:09 - gx_gp_monitor.wechat.callback_server - ERROR - 签名匹配: True -2026-01-08 16:10:09 - gx_gp_monitor.wechat.callback_server - ERROR - 签名匹配: True -2026-01-08 16:10:09 - gx_gp_monitor.wechat.callback_server - ERROR - 尝试使用默认token计算签名... -2026-01-08 16:10:09 - gx_gp_monitor.wechat.callback_server - ERROR - 尝试使用默认token计算签名... -2026-01-08 16:10:09 - gx_gp_monitor.wechat.callback_server - INFO - 收到企业微信消息: 类型=text -2026-01-08 16:10:09 - gx_gp_monitor.wechat.callback_server - INFO - 收到企业微信消息: 类型=text -2026-01-08 16:10:09 - gx_gp_monitor.wechat.callback_server - INFO - 处理文本消息: content=总结..., user=WeiJueSen -2026-01-08 16:10:09 - gx_gp_monitor.wechat.callback_server - INFO - 处理文本消息: content=总结..., user=WeiJueSen -2026-01-08 16:10:09 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 总结, user: WeiJueSen -2026-01-08 16:10:09 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 总结, user: WeiJueSen -2026-01-08 16:10:09 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 请求今日总结 -2026-01-08 16:10:09 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 请求今日总结 -2026-01-08 16:14:16 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 16:14:16 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 16:14:16 - gx_gp_monitor.wechat.callback_server - INFO - 企业微信回调服务器初始化完成 -2026-01-08 16:14:16 - gx_gp_monitor.wechat.callback_server - INFO - 企业微信回调服务器初始化完成 -2026-01-08 16:14:16 - __main__ - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 16:14:16 - gx_gp_monitor.wechat.callback_server - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 16:14:16 - gx_gp_monitor.wechat.callback_server - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 16:14:52 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 16:14:52 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 16:14:52 - gx_gp_monitor.wechat.callback_server - INFO - 企业微信回调服务器初始化完成 -2026-01-08 16:14:52 - gx_gp_monitor.wechat.callback_server - INFO - 企业微信回调服务器初始化完成 -2026-01-08 16:14:52 - __main__ - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 16:14:52 - gx_gp_monitor.wechat.callback_server - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 16:14:52 - gx_gp_monitor.wechat.callback_server - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 16:15:10 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 16:15:10 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 16:15:10 - gx_gp_monitor.wechat.callback_server - INFO - 企业微信回调服务器初始化完成 -2026-01-08 16:15:10 - gx_gp_monitor.wechat.callback_server - INFO - 企业微信回调服务器初始化完成 -2026-01-08 16:15:10 - __main__ - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 16:15:10 - gx_gp_monitor.wechat.callback_server - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 16:15:10 - gx_gp_monitor.wechat.callback_server - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 16:15:38 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 16:15:38 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 16:15:38 - gx_gp_monitor.wechat.callback_server - INFO - 企业微信回调服务器初始化完成 -2026-01-08 16:15:38 - gx_gp_monitor.wechat.callback_server - INFO - 企业微信回调服务器初始化完成 -2026-01-08 16:15:38 - __main__ - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 16:15:38 - gx_gp_monitor.wechat.callback_server - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 16:15:38 - gx_gp_monitor.wechat.callback_server - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 16:16:50 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 16:16:50 - gx_gp_monitor.wechat.callback_server - INFO - 企业微信回调服务器初始化完成 -2026-01-08 16:16:50 - __main__ - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 16:16:50 - gx_gp_monitor.wechat.callback_server - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 16:17:25 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 -2026-01-08 16:17:25 - gx_gp_monitor.wechat.callback_server - INFO - 企业微信回调服务器初始化完成 -2026-01-08 16:17:25 - __main__ - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 16:17:25 - gx_gp_monitor.wechat.callback_server - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 -2026-01-08 16:17:31 - gx_gp_monitor.wechat.callback_server - ERROR - ✅ XML解析成功,提取的encrypt长度: 472 -2026-01-08 16:17:31 - gx_gp_monitor.wechat.callback_server - ERROR - 提取的encrypt前50字符: 1TwnEhf35Xj4mgvAVc+fuKRQCArHVY8OlDGtmEVH1RZvQyHJ/5... -2026-01-08 16:17:31 - gx_gp_monitor.wechat.callback_server - ERROR - 计算的签名: abd63e4d89bed58b9a37c3b694809f478fa3519d -2026-01-08 16:17:31 - gx_gp_monitor.wechat.callback_server - ERROR - 接收的签名: abd63e4d89bed58b9a37c3b694809f478fa3519d -2026-01-08 16:17:31 - gx_gp_monitor.wechat.callback_server - ERROR - 签名匹配: True -2026-01-08 16:17:31 - gx_gp_monitor.wechat.callback_server - ERROR - 尝试使用默认token计算签名... -2026-01-08 16:17:31 - gx_gp_monitor.wechat.callback_server - INFO - 收到企业微信消息: 类型=text -2026-01-08 16:17:31 - gx_gp_monitor.wechat.callback_server - INFO - 处理文本消息: content=总结..., user=WeiJueSen -2026-01-08 16:17:31 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 总结, user: WeiJueSen -2026-01-08 16:17:31 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 请求今日总结 +2026-01-08 16:33:19 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 +2026-01-08 16:33:19 - gx_gp_monitor.wechat.callback_server - INFO - 企业微信回调服务器初始化完成 +2026-01-08 16:33:19 - __main__ - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 +2026-01-08 16:33:19 - gx_gp_monitor.wechat.callback_server - INFO - 启动企业微信回调服务器: 0.0.0.0:18001 +2026-01-08 16:33:27 - gx_gp_monitor.wechat.callback_server - ERROR - ✅ XML解析成功,提取的encrypt长度: 472 +2026-01-08 16:33:27 - gx_gp_monitor.wechat.callback_server - ERROR - 提取的encrypt前50字符: FCJK1Mkf+Yj8ov744fIY0Uowsq7a+ofgJpn4YGcva6RThCsgDV... +2026-01-08 16:33:27 - gx_gp_monitor.wechat.callback_server - ERROR - 计算的签名: 74df59483f58428951a03a3aaebee5d1c9983da9 +2026-01-08 16:33:27 - gx_gp_monitor.wechat.callback_server - ERROR - 接收的签名: 74df59483f58428951a03a3aaebee5d1c9983da9 +2026-01-08 16:33:27 - gx_gp_monitor.wechat.callback_server - ERROR - 签名匹配: True +2026-01-08 16:33:27 - gx_gp_monitor.wechat.callback_server - ERROR - 尝试使用默认token计算签名... +2026-01-08 16:33:27 - gx_gp_monitor.wechat.callback_server - INFO - 收到企业微信消息: 类型=text +2026-01-08 16:33:27 - gx_gp_monitor.wechat.callback_server - INFO - 处理文本消息: content=总结..., user=WeiJueSen +2026-01-08 16:33:27 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 总结, user: WeiJueSen +2026-01-08 16:33:27 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 请求今日总结 +2026-01-08 16:33:53 - gx_gp_monitor.wechat.callback_server - ERROR - ✅ XML解析成功,提取的encrypt长度: 472 +2026-01-08 16:33:53 - gx_gp_monitor.wechat.callback_server - ERROR - 提取的encrypt前50字符: 4hpcxTcK2XMp5aVcbJ1N9OpCR1wTkuJq/6BKdED4C9DV0SwMln... +2026-01-08 16:33:53 - gx_gp_monitor.wechat.callback_server - ERROR - 计算的签名: 848b1a275b7df84bafaae65963ff5536215dcc72 +2026-01-08 16:33:53 - gx_gp_monitor.wechat.callback_server - ERROR - 接收的签名: 848b1a275b7df84bafaae65963ff5536215dcc72 +2026-01-08 16:33:53 - gx_gp_monitor.wechat.callback_server - ERROR - 签名匹配: True +2026-01-08 16:33:53 - gx_gp_monitor.wechat.callback_server - ERROR - 尝试使用默认token计算签名... +2026-01-08 16:33:53 - gx_gp_monitor.wechat.callback_server - INFO - 收到企业微信消息: 类型=text +2026-01-08 16:33:53 - gx_gp_monitor.wechat.callback_server - INFO - 处理文本消息: content=爬取 大化..., user=WeiJueSen +2026-01-08 16:33:53 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 大化, user: WeiJueSen +2026-01-08 16:33:53 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['大化'] +2026-01-08 16:33:53 - gx_gp_monitor.wechat.message_handler - ERROR - 手动爬取处理异常: name 'Dict' is not defined +2026-01-08 16:35:14 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === +2026-01-08 16:35:14 - gx_gp_monitor.main - INFO - 版本: 1.0.0 +2026-01-08 16:35:14 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 +2026-01-08 16:35:14 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 +2026-01-08 16:35:14 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 +2026-01-08 16:35:14 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 +2026-01-08 16:35:14 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 +2026-01-08 16:35:14 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 +2026-01-08 16:35:14 - gx_gp_monitor.main - INFO - 应用初始化完成 +2026-01-08 16:35:14 - gx_gp_monitor.main - INFO - 开始执行爬取任务 +2026-01-08 16:35:14 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 +2026-01-08 16:35:14 - gx_gp_monitor - INFO - 开始爬取 采购公告 +2026-01-08 16:35:15 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:35:15 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 0.44秒 +2026-01-08 16:35:15 - gx_gp_monitor - INFO - 开始爬取 结果公告 +2026-01-08 16:35:15 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:35:15 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.20秒 +2026-01-08 16:35:15 - gx_gp_monitor - INFO - 开始爬取 合同公告 +2026-01-08 16:35:15 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:35:15 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.18秒 +2026-01-08 16:35:15 - gx_gp_monitor - INFO - 开始爬取 更正公告 +2026-01-08 16:35:15 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:35:15 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.17秒 +2026-01-08 16:35:15 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 +2026-01-08 16:35:15 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:35:15 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.24秒 +2026-01-08 16:35:15 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 +2026-01-08 16:35:16 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:35:16 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.15秒 +2026-01-08 16:35:16 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 +2026-01-08 16:35:16 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:35:16 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.33秒 +2026-01-08 16:35:16 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 +2026-01-08 16:35:16 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:35:16 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.18秒 +2026-01-08 16:35:16 - gx_gp_monitor - INFO - 开始爬取 工程类公告 +2026-01-08 16:35:16 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:35:16 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.16秒 +2026-01-08 16:35:16 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 +2026-01-08 16:35:16 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:35:16 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.17秒 +2026-01-08 16:35:16 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 +2026-01-08 16:35:16 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:35:16 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.16秒 +2026-01-08 16:35:16 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 +2026-01-08 16:35:17 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:35:17 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.15秒 +2026-01-08 16:35:17 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 +2026-01-08 16:35:17 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:35:17 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.22秒 +2026-01-08 16:35:17 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 +2026-01-08 16:35:17 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 +2026-01-08 16:35:17 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 +2026-01-08 16:35:17 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:35:17 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 +2026-01-08 16:35:17 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:35:17 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 +2026-01-08 16:35:17 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:35:17 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 +2026-01-08 16:35:17 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:35:17 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 +2026-01-08 16:35:17 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:35:17 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 +2026-01-08 16:35:17 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:35:17 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 +2026-01-08 16:35:17 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 1 条 +2026-01-08 16:35:17 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 1 条公告 +2026-01-08 16:35:17 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 1 条 +2026-01-08 16:35:17 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 1 条公告 +2026-01-08 16:35:17 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:35:17 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 +2026-01-08 16:35:17 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:35:17 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 +2026-01-08 16:35:17 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:35:17 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 +2026-01-08 16:35:17 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:35:17 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 +2026-01-08 16:35:17 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:35:17 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 +2026-01-08 16:35:17 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 2 条公告 +2026-01-08 16:35:17 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 2 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 1, 'ZcyAnnouncement10': 1, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} +2026-01-08 16:35:17 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 1300 -> 1300 条公告 +2026-01-08 16:35:17 - gx_gp_monitor.filters.filters - INFO - 去重筛选: 移除了 1300 条重复公告 +2026-01-08 16:35:17 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 0 -> 0 条公告 +2026-01-08 16:35:17 - gx_gp_monitor.filters.filters - INFO - 筛选完成: 总数 1300 -> 筛选后 0 (关键词: 0, 日期: 0, 去重: 1300, 来源: 0) +2026-01-08 16:35:17 - gx_gp_monitor.main - INFO - 筛选后剩余 0 条公告 +2026-01-08 16:35:17 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 0 条公告) +2026-01-08 16:35:17 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 0, 'saved': 0, 'markdown_generated': True, 'notification_sent': False, 'filter_stats': {'keyword_filtered': 0, 'date_filtered': 0, 'duplicate_filtered': 1300, 'source_filtered': 0}} +2026-01-08 16:35:24 - gx_gp_monitor.wechat.message_handler - INFO - 企业微信消息处理器初始化完成 +2026-01-08 16:35:24 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 大化, user: WeiJueSen +2026-01-08 16:35:24 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['大化'] +2026-01-08 16:35:24 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === +2026-01-08 16:35:24 - gx_gp_monitor.main - INFO - 版本: 1.0.0 +2026-01-08 16:35:24 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 +2026-01-08 16:35:24 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 +2026-01-08 16:35:24 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 +2026-01-08 16:35:24 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 +2026-01-08 16:35:24 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 +2026-01-08 16:35:24 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 +2026-01-08 16:35:24 - gx_gp_monitor.main - INFO - 应用初始化完成 +2026-01-08 16:35:24 - gx_gp_monitor.main - INFO - 开始执行爬取任务 +2026-01-08 16:35:24 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 +2026-01-08 16:35:24 - gx_gp_monitor - INFO - 开始爬取 采购公告 +2026-01-08 16:35:54 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:35:54 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 30.43秒 +2026-01-08 16:35:54 - gx_gp_monitor - INFO - 开始爬取 结果公告 +2026-01-08 16:35:54 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:35:54 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.21秒 +2026-01-08 16:35:54 - gx_gp_monitor - INFO - 开始爬取 合同公告 +2026-01-08 16:35:55 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:35:55 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.20秒 +2026-01-08 16:35:55 - gx_gp_monitor - INFO - 开始爬取 更正公告 +2026-01-08 16:35:55 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:35:55 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.18秒 +2026-01-08 16:35:55 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 +2026-01-08 16:35:55 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:35:55 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.17秒 +2026-01-08 16:35:55 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 +2026-01-08 16:35:55 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:35:55 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.19秒 +2026-01-08 16:35:55 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 +2026-01-08 16:35:55 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:35:55 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.37秒 +2026-01-08 16:35:55 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 +2026-01-08 16:35:56 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:35:56 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.21秒 +2026-01-08 16:35:56 - gx_gp_monitor - INFO - 开始爬取 工程类公告 +2026-01-08 16:35:56 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:35:56 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.26秒 +2026-01-08 16:35:56 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 +2026-01-08 16:35:56 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:35:56 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.19秒 +2026-01-08 16:35:56 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 +2026-01-08 16:35:56 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:35:56 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.19秒 +2026-01-08 16:35:56 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 +2026-01-08 16:35:57 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:35:57 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.22秒 +2026-01-08 16:35:57 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 +2026-01-08 16:35:57 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:35:57 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.18秒 +2026-01-08 16:35:57 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 +2026-01-08 16:35:57 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 +2026-01-08 16:35:57 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 +2026-01-08 16:35:57 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:35:57 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 +2026-01-08 16:35:57 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:35:57 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 +2026-01-08 16:35:57 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:35:57 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 +2026-01-08 16:35:57 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:35:57 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 +2026-01-08 16:35:57 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:35:57 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 +2026-01-08 16:35:57 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:35:57 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 +2026-01-08 16:35:57 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:35:57 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 +2026-01-08 16:35:57 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:35:57 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 +2026-01-08 16:35:57 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:35:57 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 +2026-01-08 16:35:57 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:35:57 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 +2026-01-08 16:35:57 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:35:57 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 +2026-01-08 16:35:57 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:35:57 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 +2026-01-08 16:35:57 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:35:57 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 +2026-01-08 16:35:57 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 +2026-01-08 16:35:57 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} +2026-01-08 16:35:57 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 1300 -> 1300 条公告 +2026-01-08 16:35:57 - gx_gp_monitor.filters.filters - INFO - 去重筛选: 移除了 1300 条重复公告 +2026-01-08 16:35:57 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 0 -> 0 条公告 +2026-01-08 16:35:57 - gx_gp_monitor.filters.filters - INFO - 筛选完成: 总数 1300 -> 筛选后 0 (关键词: 0, 日期: 0, 去重: 1300, 来源: 0) +2026-01-08 16:35:57 - gx_gp_monitor.main - INFO - 筛选后剩余 0 条公告 +2026-01-08 16:35:57 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 0 条公告) +2026-01-08 16:35:57 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 0, 'saved': 0, 'markdown_generated': True, 'notification_sent': False, 'filter_stats': {'keyword_filtered': 0, 'date_filtered': 0, 'duplicate_filtered': 1300, 'source_filtered': 0}} +2026-01-08 16:36:47 - gx_gp_monitor.wechat.callback_server - ERROR - ✅ XML解析成功,提取的encrypt长度: 472 +2026-01-08 16:36:47 - gx_gp_monitor.wechat.callback_server - ERROR - 提取的encrypt前50字符: 6BU7wXI1yPTIP0sbi7j8LLHOE9kKMQn/++bDuNxi+HFzDBZsLa... +2026-01-08 16:36:47 - gx_gp_monitor.wechat.callback_server - ERROR - 计算的签名: b55817172d1bd98b6c848b0845c19d77a21ac1e7 +2026-01-08 16:36:47 - gx_gp_monitor.wechat.callback_server - ERROR - 接收的签名: b55817172d1bd98b6c848b0845c19d77a21ac1e7 +2026-01-08 16:36:47 - gx_gp_monitor.wechat.callback_server - ERROR - 签名匹配: True +2026-01-08 16:36:47 - gx_gp_monitor.wechat.callback_server - ERROR - 尝试使用默认token计算签名... +2026-01-08 16:36:47 - gx_gp_monitor.wechat.callback_server - INFO - 收到企业微信消息: 类型=text +2026-01-08 16:36:47 - gx_gp_monitor.wechat.callback_server - INFO - 处理文本消息: content=爬取 马山..., user=WeiJueSen +2026-01-08 16:36:47 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 马山, user: WeiJueSen +2026-01-08 16:36:47 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['马山'] +2026-01-08 16:36:47 - gx_gp_monitor.main - INFO - === 广西政府采购网公告监控系统启动 === +2026-01-08 16:36:47 - gx_gp_monitor.main - INFO - 版本: 1.0.0 +2026-01-08 16:36:47 - gx_gp_monitor.main - INFO - 配置文件: 默认配置 +2026-01-08 16:36:47 - gx_gp_monitor.core.reliability - INFO - 健康检查通过 +2026-01-08 16:36:48 - gx_gp_monitor.core.database - INFO - 数据库连接池初始化成功 +2026-01-08 16:36:48 - gx_gp_monitor.core.database - INFO - 开始初始化数据库表结构 +2026-01-08 16:36:48 - gx_gp_monitor.core.database - INFO - 数据库表结构初始化完成 +2026-01-08 16:36:48 - gx_gp_monitor.storage.postgresql - INFO - 存储初始化完成 +2026-01-08 16:36:48 - gx_gp_monitor.main - INFO - 应用初始化完成 +2026-01-08 16:36:48 - gx_gp_monitor.main - INFO - 开始执行爬取任务 +2026-01-08 16:36:48 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 +2026-01-08 16:36:48 - gx_gp_monitor - INFO - 开始爬取 采购公告 +2026-01-08 16:36:52 - gx_gp_monitor.wechat.callback_server - ERROR - ✅ XML解析成功,提取的encrypt长度: 472 +2026-01-08 16:36:52 - gx_gp_monitor.wechat.callback_server - ERROR - 提取的encrypt前50字符: 6BU7wXI1yPTIP0sbi7j8LLHOE9kKMQn/++bDuNxi+HFzDBZsLa... +2026-01-08 16:36:52 - gx_gp_monitor.wechat.callback_server - ERROR - 计算的签名: b55817172d1bd98b6c848b0845c19d77a21ac1e7 +2026-01-08 16:36:52 - gx_gp_monitor.wechat.callback_server - ERROR - 接收的签名: b55817172d1bd98b6c848b0845c19d77a21ac1e7 +2026-01-08 16:36:52 - gx_gp_monitor.wechat.callback_server - ERROR - 签名匹配: True +2026-01-08 16:36:52 - gx_gp_monitor.wechat.callback_server - ERROR - 尝试使用默认token计算签名... +2026-01-08 16:36:52 - gx_gp_monitor.wechat.callback_server - INFO - 收到企业微信消息: 类型=text +2026-01-08 16:36:52 - gx_gp_monitor.wechat.callback_server - INFO - 处理文本消息: content=爬取 马山..., user=WeiJueSen +2026-01-08 16:36:52 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 马山, user: WeiJueSen +2026-01-08 16:36:52 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['马山'] +2026-01-08 16:36:52 - gx_gp_monitor.main - INFO - 开始执行爬取任务 +2026-01-08 16:36:52 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 +2026-01-08 16:36:52 - gx_gp_monitor - INFO - 开始爬取 采购公告 +2026-01-08 16:36:57 - gx_gp_monitor.wechat.callback_server - ERROR - ✅ XML解析成功,提取的encrypt长度: 472 +2026-01-08 16:36:57 - gx_gp_monitor.wechat.callback_server - ERROR - 提取的encrypt前50字符: 6BU7wXI1yPTIP0sbi7j8LLHOE9kKMQn/++bDuNxi+HFzDBZsLa... +2026-01-08 16:36:57 - gx_gp_monitor.wechat.callback_server - ERROR - 计算的签名: b55817172d1bd98b6c848b0845c19d77a21ac1e7 +2026-01-08 16:36:57 - gx_gp_monitor.wechat.callback_server - ERROR - 接收的签名: b55817172d1bd98b6c848b0845c19d77a21ac1e7 +2026-01-08 16:36:57 - gx_gp_monitor.wechat.callback_server - ERROR - 签名匹配: True +2026-01-08 16:36:57 - gx_gp_monitor.wechat.callback_server - ERROR - 尝试使用默认token计算签名... +2026-01-08 16:36:57 - gx_gp_monitor.wechat.callback_server - INFO - 收到企业微信消息: 类型=text +2026-01-08 16:36:57 - gx_gp_monitor.wechat.callback_server - INFO - 处理文本消息: content=爬取 马山..., user=WeiJueSen +2026-01-08 16:36:57 - gx_gp_monitor.wechat.message_handler - INFO - 处理文本消息: 爬取 马山, user: WeiJueSen +2026-01-08 16:36:57 - gx_gp_monitor.wechat.message_handler - INFO - 用户 WeiJueSen 手动爬取关键词: ['马山'] +2026-01-08 16:36:57 - gx_gp_monitor.main - INFO - 开始执行爬取任务 +2026-01-08 16:36:57 - gx_gp_monitor.crawler.spider - INFO - 开始爬取 13 个公告来源 +2026-01-08 16:36:57 - gx_gp_monitor - INFO - 开始爬取 采购公告 +2026-01-08 16:37:18 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:18 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 30.49秒 +2026-01-08 16:37:18 - gx_gp_monitor - INFO - 开始爬取 结果公告 +2026-01-08 16:37:18 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:18 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.19秒 +2026-01-08 16:37:18 - gx_gp_monitor - INFO - 开始爬取 合同公告 +2026-01-08 16:37:18 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:18 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.20秒 +2026-01-08 16:37:18 - gx_gp_monitor - INFO - 开始爬取 更正公告 +2026-01-08 16:37:19 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:19 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.21秒 +2026-01-08 16:37:19 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 +2026-01-08 16:37:19 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:19 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.16秒 +2026-01-08 16:37:19 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 +2026-01-08 16:37:19 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:19 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.20秒 +2026-01-08 16:37:19 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 +2026-01-08 16:37:19 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:19 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.29秒 +2026-01-08 16:37:19 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 +2026-01-08 16:37:20 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:20 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.27秒 +2026-01-08 16:37:20 - gx_gp_monitor - INFO - 开始爬取 工程类公告 +2026-01-08 16:37:20 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:20 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.21秒 +2026-01-08 16:37:20 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 +2026-01-08 16:37:20 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:20 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.25秒 +2026-01-08 16:37:20 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 +2026-01-08 16:37:20 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:20 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.27秒 +2026-01-08 16:37:20 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 +2026-01-08 16:37:20 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:20 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.20秒 +2026-01-08 16:37:20 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 +2026-01-08 16:37:21 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:21 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.19秒 +2026-01-08 16:37:21 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 +2026-01-08 16:37:21 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 +2026-01-08 16:37:21 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 +2026-01-08 16:37:21 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:21 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 +2026-01-08 16:37:21 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:21 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 +2026-01-08 16:37:21 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:21 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 +2026-01-08 16:37:21 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:21 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 +2026-01-08 16:37:21 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:21 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 +2026-01-08 16:37:21 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:21 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 +2026-01-08 16:37:21 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:21 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 +2026-01-08 16:37:21 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:21 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 +2026-01-08 16:37:21 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:21 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 +2026-01-08 16:37:21 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:21 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 +2026-01-08 16:37:21 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:21 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 +2026-01-08 16:37:21 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:21 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 +2026-01-08 16:37:21 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:21 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 +2026-01-08 16:37:21 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 +2026-01-08 16:37:21 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} +2026-01-08 16:37:21 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 1300 -> 1300 条公告 +2026-01-08 16:37:21 - gx_gp_monitor.filters.filters - INFO - 去重筛选: 移除了 1300 条重复公告 +2026-01-08 16:37:21 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 0 -> 0 条公告 +2026-01-08 16:37:21 - gx_gp_monitor.filters.filters - INFO - 筛选完成: 总数 1300 -> 筛选后 0 (关键词: 0, 日期: 0, 去重: 1300, 来源: 0) +2026-01-08 16:37:21 - gx_gp_monitor.main - INFO - 筛选后剩余 0 条公告 +2026-01-08 16:37:21 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 0 条公告) +2026-01-08 16:37:21 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 0, 'saved': 0, 'markdown_generated': True, 'notification_sent': False, 'filter_stats': {'keyword_filtered': 0, 'date_filtered': 0, 'duplicate_filtered': 1300, 'source_filtered': 0}} +2026-01-08 16:37:23 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:23 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 30.44秒 +2026-01-08 16:37:23 - gx_gp_monitor - INFO - 开始爬取 结果公告 +2026-01-08 16:37:23 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:23 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.28秒 +2026-01-08 16:37:23 - gx_gp_monitor - INFO - 开始爬取 合同公告 +2026-01-08 16:37:23 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:23 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.26秒 +2026-01-08 16:37:23 - gx_gp_monitor - INFO - 开始爬取 更正公告 +2026-01-08 16:37:24 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:24 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.29秒 +2026-01-08 16:37:24 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 +2026-01-08 16:37:24 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:24 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.20秒 +2026-01-08 16:37:24 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 +2026-01-08 16:37:24 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:24 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.18秒 +2026-01-08 16:37:24 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 +2026-01-08 16:37:24 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:24 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.39秒 +2026-01-08 16:37:24 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 +2026-01-08 16:37:25 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:25 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.20秒 +2026-01-08 16:37:25 - gx_gp_monitor - INFO - 开始爬取 工程类公告 +2026-01-08 16:37:25 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:25 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.21秒 +2026-01-08 16:37:25 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 +2026-01-08 16:37:25 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:25 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.22秒 +2026-01-08 16:37:25 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 +2026-01-08 16:37:25 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:25 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.21秒 +2026-01-08 16:37:25 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 +2026-01-08 16:37:25 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:25 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.24秒 +2026-01-08 16:37:25 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 +2026-01-08 16:37:26 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:26 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.19秒 +2026-01-08 16:37:26 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 +2026-01-08 16:37:26 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 +2026-01-08 16:37:26 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 +2026-01-08 16:37:26 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:26 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 +2026-01-08 16:37:26 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:26 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 +2026-01-08 16:37:26 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:26 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 +2026-01-08 16:37:26 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:26 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 +2026-01-08 16:37:26 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:26 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 +2026-01-08 16:37:26 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:26 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 +2026-01-08 16:37:26 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:26 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 +2026-01-08 16:37:26 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:26 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 +2026-01-08 16:37:26 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:26 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 +2026-01-08 16:37:26 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:26 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 +2026-01-08 16:37:26 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:26 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 +2026-01-08 16:37:26 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:26 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 +2026-01-08 16:37:26 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:26 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 +2026-01-08 16:37:26 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 +2026-01-08 16:37:26 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} +2026-01-08 16:37:26 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 1300 -> 1300 条公告 +2026-01-08 16:37:26 - gx_gp_monitor.filters.filters - INFO - 去重筛选: 移除了 1300 条重复公告 +2026-01-08 16:37:26 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 0 -> 0 条公告 +2026-01-08 16:37:26 - gx_gp_monitor.filters.filters - INFO - 筛选完成: 总数 1300 -> 筛选后 0 (关键词: 0, 日期: 0, 去重: 1300, 来源: 0) +2026-01-08 16:37:26 - gx_gp_monitor.main - INFO - 筛选后剩余 0 条公告 +2026-01-08 16:37:26 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 0 条公告) +2026-01-08 16:37:26 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 0, 'saved': 0, 'markdown_generated': True, 'notification_sent': False, 'filter_stats': {'keyword_filtered': 0, 'date_filtered': 0, 'duplicate_filtered': 1300, 'source_filtered': 0}} +2026-01-08 16:37:28 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:28 - gx_gp_monitor - INFO - 采购公告 爬取完成,共获取 100 条公告,耗时 30.49秒 +2026-01-08 16:37:28 - gx_gp_monitor - INFO - 开始爬取 结果公告 +2026-01-08 16:37:28 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:28 - gx_gp_monitor - INFO - 结果公告 爬取完成,共获取 100 条公告,耗时 0.25秒 +2026-01-08 16:37:28 - gx_gp_monitor - INFO - 开始爬取 合同公告 +2026-01-08 16:37:28 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:28 - gx_gp_monitor - INFO - 合同公告 爬取完成,共获取 100 条公告,耗时 0.33秒 +2026-01-08 16:37:28 - gx_gp_monitor - INFO - 开始爬取 更正公告 +2026-01-08 16:37:29 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:29 - gx_gp_monitor - INFO - 更正公告 爬取完成,共获取 100 条公告,耗时 0.25秒 +2026-01-08 16:37:29 - gx_gp_monitor - INFO - 开始爬取 招标文件预公示 +2026-01-08 16:37:29 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:29 - gx_gp_monitor - INFO - 招标文件预公示 爬取完成,共获取 100 条公告,耗时 0.19秒 +2026-01-08 16:37:29 - gx_gp_monitor - INFO - 开始爬取 单一来源公示 +2026-01-08 16:37:29 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:29 - gx_gp_monitor - INFO - 单一来源公示 爬取完成,共获取 100 条公告,耗时 0.25秒 +2026-01-08 16:37:29 - gx_gp_monitor - INFO - 开始爬取 电子卖场公示 +2026-01-08 16:37:30 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:30 - gx_gp_monitor - INFO - 电子卖场公示 爬取完成,共获取 100 条公告,耗时 0.43秒 +2026-01-08 16:37:30 - gx_gp_monitor - INFO - 开始爬取 履约验收公示 +2026-01-08 16:37:30 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:30 - gx_gp_monitor - INFO - 履约验收公示 爬取完成,共获取 100 条公告,耗时 0.17秒 +2026-01-08 16:37:30 - gx_gp_monitor - INFO - 开始爬取 工程类公告 +2026-01-08 16:37:30 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:30 - gx_gp_monitor - INFO - 工程类公告 爬取完成,共获取 100 条公告,耗时 0.23秒 +2026-01-08 16:37:30 - gx_gp_monitor - INFO - 开始爬取 框架协议征集公告 +2026-01-08 16:37:30 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:30 - gx_gp_monitor - INFO - 框架协议征集公告 爬取完成,共获取 100 条公告,耗时 0.21秒 +2026-01-08 16:37:30 - gx_gp_monitor - INFO - 开始爬取 框架协议入围结果公告 +2026-01-08 16:37:30 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:30 - gx_gp_monitor - INFO - 框架协议入围结果公告 爬取完成,共获取 100 条公告,耗时 0.21秒 +2026-01-08 16:37:30 - gx_gp_monitor - INFO - 开始爬取 框架协议成交结果汇总公告 +2026-01-08 16:37:31 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:31 - gx_gp_monitor - INFO - 框架协议成交结果汇总公告 爬取完成,共获取 100 条公告,耗时 0.17秒 +2026-01-08 16:37:31 - gx_gp_monitor - INFO - 开始爬取 采购意向公开 +2026-01-08 16:37:31 - gx_gp_monitor.crawler.parsers - INFO - 成功解析 100/100 条公告记录 +2026-01-08 16:37:31 - gx_gp_monitor - INFO - 采购意向公开 爬取完成,共获取 100 条公告,耗时 0.17秒 +2026-01-08 16:37:31 - gx_gp_monitor.crawler.spider - INFO - 爬取完成: 共处理 13 个来源,成功 13 个,失败 0 个,获取 1300 条公告 +2026-01-08 16:37:31 - gx_gp_monitor.main - INFO - 爬取到 1300 条原始公告 +2026-01-08 16:37:31 - gx_gp_monitor.storage.postgresql - INFO - 开始按来源保存 1300 条公告,每个来源最多保留 100 条 +2026-01-08 16:37:31 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:31 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement1 保存了 0 条公告 +2026-01-08 16:37:31 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:31 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement2 保存了 0 条公告 +2026-01-08 16:37:31 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:31 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement3 保存了 0 条公告 +2026-01-08 16:37:31 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:31 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement4 保存了 0 条公告 +2026-01-08 16:37:31 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:31 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement5 保存了 0 条公告 +2026-01-08 16:37:31 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:31 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement6 保存了 0 条公告 +2026-01-08 16:37:31 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:31 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement7 保存了 0 条公告 +2026-01-08 16:37:31 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:31 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement10 保存了 0 条公告 +2026-01-08 16:37:31 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:31 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement11 保存了 0 条公告 +2026-01-08 16:37:31 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:31 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement20 保存了 0 条公告 +2026-01-08 16:37:31 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:31 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement21 保存了 0 条公告 +2026-01-08 16:37:31 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:31 - gx_gp_monitor.storage.postgresql - INFO - 来源 ZcyAnnouncement23 保存了 0 条公告 +2026-01-08 16:37:31 - gx_gp_monitor.core.database - INFO - 批量保存公告完成,成功保存 0 条 +2026-01-08 16:37:31 - gx_gp_monitor.storage.postgresql - INFO - 来源 61-266648 保存了 0 条公告 +2026-01-08 16:37:31 - gx_gp_monitor.storage.postgresql - INFO - 按来源保存完成,总计保存 0 条公告 +2026-01-08 16:37:31 - gx_gp_monitor.main - INFO - 保存所有公告完成:共保存 0 条,按来源统计: {'ZcyAnnouncement1': 0, 'ZcyAnnouncement2': 0, 'ZcyAnnouncement3': 0, 'ZcyAnnouncement4': 0, 'ZcyAnnouncement5': 0, 'ZcyAnnouncement6': 0, 'ZcyAnnouncement7': 0, 'ZcyAnnouncement10': 0, 'ZcyAnnouncement11': 0, 'ZcyAnnouncement20': 0, 'ZcyAnnouncement21': 0, 'ZcyAnnouncement23': 0, '61-266648': 0} +2026-01-08 16:37:31 - gx_gp_monitor.filters.filters - INFO - 来源筛选: 1300 -> 1300 条公告 +2026-01-08 16:37:31 - gx_gp_monitor.filters.filters - INFO - 去重筛选: 移除了 1300 条重复公告 +2026-01-08 16:37:31 - gx_gp_monitor.filters.filters - INFO - 关键词筛选: 0 -> 0 条公告 +2026-01-08 16:37:31 - gx_gp_monitor.filters.filters - INFO - 筛选完成: 总数 1300 -> 筛选后 0 (关键词: 0, 日期: 0, 去重: 1300, 来源: 0) +2026-01-08 16:37:31 - gx_gp_monitor.main - INFO - 筛选后剩余 0 条公告 +2026-01-08 16:37:31 - gx_gp_monitor.storage.md_generator - INFO - Markdown文件已保存到: onu.md (共 0 条公告) +2026-01-08 16:37:31 - gx_gp_monitor.main - INFO - 爬取任务完成: {'success': True, 'total_crawled': 1300, 'filtered': 0, 'saved': 0, 'markdown_generated': True, 'notification_sent': False, 'filter_stats': {'keyword_filtered': 0, 'date_filtered': 0, 'duplicate_filtered': 1300, 'source_filtered': 0}} diff --git a/onu.md b/onu.md index b235612..800412a 100644 --- a/onu.md +++ b/onu.md @@ -1,6 +1,6 @@ # 广西政府采购网公告监控 -**更新时间**: 2026-01-08 09:29:42 +**更新时间**: 2026-01-08 16:37:31 ## 无新公告