From b52d9c069dd8288f98a9ff5fbb177fdd7bb6cfce Mon Sep 17 00:00:00 2001 From: v6ole Date: Thu, 8 Jan 2026 16:40:10 +0800 Subject: [PATCH] Update announcement timestamp in onu.md and enhance logger formatting to preserve original message and levelname. Remove outdated onu.md file and log files, and add type hints in main.py for better code clarity. --- .../__pycache__/main.cpython-313.pyc | Bin 18685 -> 18734 bytes .../core/__pycache__/logger.cpython-313.pyc | Bin 16196 -> 16306 bytes gx_gp_monitor/core/logger.py | 20 +- gx_gp_monitor/logs/gx_gp_monitor.log | 858 ------------------ gx_gp_monitor/main.py | 1 + gx_gp_monitor/onu.md | 11 - .../callback_server.cpython-313.pyc | Bin 14640 -> 14640 bytes .../message_handler.cpython-313.pyc | Bin 15580 -> 15580 bytes logs/gx_gp_monitor.log | 553 +++++++++-- onu.md | 2 +- 10 files changed, 497 insertions(+), 948 deletions(-) delete mode 100644 gx_gp_monitor/logs/gx_gp_monitor.log delete mode 100644 gx_gp_monitor/onu.md diff --git a/gx_gp_monitor/__pycache__/main.cpython-313.pyc b/gx_gp_monitor/__pycache__/main.cpython-313.pyc index 675526b39a9a1877b875e893410fc21f0ea573ac..518bc0c484a80d9042f14c9bfa4e7f1334ece438 100644 GIT binary patch delta 2818 zcmZuyU2Gd!6`t!EkL@^4oY?uZlX#MJlQ^mK+t4&^oK5pnF;=Z@2Bf9yl{JYcuDkX) zJu_}MDv&LrtKF5hw0i|*|DXu%KCH+J@B^X}0%_Y7k34}G5DO12uo7Ysyt3k+J9X1m zILbHYo^$TG=l9I0wZ2frfZ zyn{k6Fh@{T5NLQVDnT$u=re(+XCqFhyCQoe*TQsy4V^iUtE&k8g67raOsg7(u-XP~ z3a)*bb~OSKH40I__GdcOPUz%xAk(FGLpP_JGCgVxVw?_U;%YDSs(sL>_Cvp#fCT3^ zXB2f{4+i)mlo?cqU`Ra#hxocB^OQOa!<=r-jHsh9%EE~ab`TfQ4&ox(|Bs7kJT4v<(H;*g3}Y;-L^}wMXb*!+2-)~$?vtQ*p-WmDjOE5z zgzY)9@hlc=GIGqL2nqI=y}2zciV0zxJlJtk5Fo|1qq$UzFzadTY2|ykq@%$LxID6v zqqmN9e8JnuDB9LMkXlKx6aM5<+oW+)1O+~>&X!K7y$`{0D{86kxJ%v6@p0mF6m&F z%p$bV51Ph02T^AP1;nsK_Ei)GhUlkFV`RDB5xg#wqxAhYS~!X-UIU;C*R4~ehZ4~lbED<(v z4^@B1sRw$_dB#}>3V??uMbMGnWZ-xU#%8VfCC0;4KM>G&;-~Tou6eFI zP*H@M={i?H!4ocdU6&5*wr=U=@}|D^Lf$gqB1<^;%*(c-XXx6=-g)xV`sLoLD7&uF z&l0m~?!|dLPV_B<& zUg_+XR~YSf(;ia1xeg=6Q=lMq(BL9Z2J_I??V9D5?csnjRVQejt6s{xVkbtw zIvOLN)^CpP6VgxD#&X9Fp*_qiOryF~E?MjnDY54K3NrHu=Mb<>0XqVA5niT$80(7; zBRPZ+Z@@9yJbqc`f_VM)@h*v6t-m+9Kv)|7Javk^LPw`J$gA}7^c3U#Xu7|nf;&xw zD#8VX3jJjIo1NDgnIw+9qXTP8i?AiO;_i$>TIz4jY!EVB|Htfa{Jk>n`7UaU@W`wq z_bC1SiQ_#>jI6aVV4d*S{kQ-A(yRBbUtu^D^)13jJq#oR|z1dVDEJs*LJy z`P;Rh-TT&e?!R*V-fQ279cnEdAs0|UKVC}6^UO-^5dBFyLO)-!_xL59Ou+kSyom>& z*P&>+ImR-%oil-Q$#}73!%bxJf;|yFZycUiUP-)!;AI3}Q#TS^@|wEiO8@nA;;e#9 zK7)^69WcoRNg3W_A4fv398urdfitMTj=(1m3&K*(e!M#zsiK!ms55S^ettP3`H#Rg zRGy$$*Agu<8#a7w+!mv^)@HKUkxpc*3dY1%)!Z%>9}YQxxp1(rrroluz^;&qovLLQ!LTlr0lUS0cfv@u zq3LKtuTsbt4buRf?SpoDZM{d1pjMRbulMfp8#r>w*gB`%6OY|cooFTa#mY_<>@|EQ zf!}z%N|;%mJ=jO;H3S8Lj}|rqPawR3)Gz`Lp5s4JsTOKwBMrZ1OTzv=R-US-;^HSl zZ{0Yhl5G33e}xDi5qX`6ANkX(bDlfC=G6|*osOQ>8SkA5f}ClB^o)q~oV>Q^y>tBN U+PwGfjKp@`o%b@%-9@DT2e>qZoB#j- delta 2793 zcmaJ@du&@*89&FqzH#i>apF8|=XIT?b?n4$9?RCGP13YUs@af9xx8!S*~yJ#;z#(d z-B8NriIuHFWm$LF+HQk&5<_BAw;`j!#%s`4L;QvK^A`AHB4zy#RH1=*i1VGBG)*<( zs=xEy?>px^zwdF*$s5nn|6HK1J1&=l@L$!L%3ZnO@>~94xzImoPuhA(QXZo$-xu(K zJxLdvan{}+^SE28Dor~1T>BU`jbj#bR7f{bCDoQ_h`YcQcY|BOZ#mHz_kbtf1Wn?* zF3}wKf>+4)L`%FCT7_JnXp6T)yO13TU)&G=cmM+N4(Nz?LZ{F>6J7CYH*|}ShD1+X z0VN)Up!jwrdgJ?GpOD>&zW9FFuaIODr#iSp6{0@UOVri?QQLNCLriTC5ICs%I1VKT zRsY222ua%sNe=arvF!vXBx}i9f+TssUq{mK5+b6dd!l9U(2gqKo~pZXQFS*is(yT2 zRK>W=u&BB>tVRg&tWtG1II7+au7@m~K}wuaJ2Fx|Pz@#fd4x^8ev8}G?-|tQaf?EF z_`ijVD`e8zLssavgJXn1M6C5DBW^Nk`F|e7yq1rf(Lji~2{(R*DdVjVNju5Mja3Uo zjz{?Re=?;NxET+T?vobU#eQ0EjI{A- z3-e(Y*th^)2z3bE91JN}Tq!|4igg=lDCUY;XkhOrnpglUZ`d?|5-fy$!YhPut%I#MD^)j|t$L+k$fwfzil&1THS$U>U*?Nk zIMaiG#0+Po}Yj?awiARv}jV>SOa~Hynd#E?!YLTe~N}oW$V}AdR zlDXsOxyf)XYk94#EvJ@Bm0}rUT&GJMc-k;;|MU&gmud(6tCoRQ^n{y+t&l?bQ4WS} zS<6(ipW-^q=(d5q({Un&g)&p>#fes^6isp&G~Aa2n@MTcZ{t!rpU66#r+CT* zGwcOqhSXA>hv*M$mpV&U*`&r?%IK6}v5FhYW@LsntCbga_z85q2)v z=Ye2{9}g zvVK}GYX#_H|2=SAejGWTVJAXSSyVs6z8Z?QeT{1?*tNHwf9uw_-q?DVO(;-hKM!@& z$Jif20r~{{D73GNu`Gn$;xOG)A6#wNMDIhD%Vsw{hLUKm2udOaB00P5Y!%7i49n?q zMK{ZK_Z*^Ar@mU+NSS6Mz%KU(=Ayuv}8F6DE2*|6q#bAA?; zUqo0Dmf74Ax6Bkz!v-qPvX3HNEqy2k5&S!Fi1iPgk%hru`@ulFM4znv>fi+BdHDCx z3HlV99bTkQvx~z+T=SdZ?$$M2iT4x~5K0JZ>|euY=`-w!krsX$pC3`EtM>NDBBgz` z`Uiez@04)TB@VpR_MBw`W9;uo4%10CJlP(c;xj6EHSiAj^Dn=%b@dW2&+Vr-d2OcA z!%>!-+)roN=Hz??lUm_dF1hvc>wkIWwcFpm{NbB#!ey=qQ^3<(Q8;|?@;4MleJzgj zTj#FazWhA}PO`44q2?#K4PNBHJIFj&EHyP+kD@^*;8FI{)R$z@_G`>JJwWpu6$g5_ zb?(`%Z@$9nrxo{y&-{36^954@MYcKp0Lx7Gun(qt=!491^gL~2n@4?Vk!mcL*+GN2 zhopTaSB8tI6otDlDWZWydPPMs95{=BwcWj7%+jth`%K>#c8}rS+XJF}Nmz#0_+UtB z$m)ibU&ZhUdcq`{T_|&jXPy5R~^d_siHo(9CYm zcUHaV)oVULu|1bh3tF5H7uHKqp2LR@#APNDj~NqLfvYH;LlEf|mHa+_Vq)Mqggyj3 zQilCVp|o7dYg6z(|D^nXm!9OqU#kfjQ!X+ z`SrLwH*UQ~re>p-Yts$0F3WY7e>P&fet>e#^)N*_VnsPB&yCrxk3KXvWV;cO_^KO2 LHmQ+NQJ<>)Iw&rtNnqxwTm=uLTk3J)3ojT&c%+2 zT7-W0_?++io$q~q_0${V>7N^oX#)Jc>6iQ$s;{O8L~@ypiFHKFUKO4B!K8lDt3!c} ze?bkqF6ObF+RWr;IPv%d)~YqJV_FMyX>-|g+HB*4ntl?9Y2m4%KS>L}(*>ktr$HRV zc5^XJOzvP(Y_(t8FASs#AlyLIy`Xr&7AF)A)CS^O{UZCjwp7v#%R`E;;wz96bE_*r;n zY-h?bmZwcJ@Sf_C(ryBYlsq^bJJ&1|q$OA{J?K z_bo%=YN2(ebGkF)+#W4#juf;keDm7lzj%D1YccC){*C-aLnN=ibaMC9!*_MU7SkEi z8S|`eX>-}64(>0kzLk=DJKHvuwwjSWX=KNf_v%bwJI!U+l4}iSSjrg8c4}e&Np4Nc z)#iLI08ra}N6L5-X<{Fwy<5t~Fb~!VYC-K<042REG&JO;)shtSj!IG+dr4nIY-~0! zi~U7^g;?0M!Au@v3x-Bwn_n}WN!D*gUC5w78`)IWAILW5&)!d(*?ZZKfp~6?opjE( z<{Z|L^T6^#RToM=hA@C|2*8y@^Kk74kP|IxV*dO#a)G^)Up;O^L6OU=>YNBUx?MV2 zg8Fs@2SO=A6M_@r2>>1u)lb7Xxx6&&33?z#++LSPwH;+t2e4eNR){_B>|sADu#jnXrJw|&7%lj-nTN{@ zXECp_u~e_Ekgtymi^)su%fiM?yjs!Ap%FUhm9T)Rn{^ajaE#!-=nwirvAaiMhq?h| z^={>>t(!2up?SeFryVU26&zxEXF($q8DUi`#XJxL3peZ7pPSaV}KhRB;Mvdk%I- zaKu?ZJAd)ctFM3h?pd1X+E3t!GK71?iLNb`Y$rEay4?fz9JBv%gFVxz_B?_cAkm)h zI<}GDv#X9~FypU|Dq>fY^X-s7sA&CR@32hAKm`hvhhv6wupMQ^&>5bxI{yVaX zw7EN^#%G-{>8VVcrxd#Y$+5ald zPzC0y+noz|f?h(v_$?BwKK0t)|pd~8HXOd z3Fo!!qk46q=CPX%J?vWz>CP*t_Ypv1eiS|Gtv3^m!s#|p&1aVzQu#bab*c1+U#Xgk zs(i%JB@k$1`?n_C`S6|BPu_X$>}Tg*{PfznZm17lK-a&X>4^96$PoP)1a?C>=q;4A zA&f%hcK3b{mPo@(4x0#S6vroT0W}D`w>Wgi0y-i5Nz7akOQK@QZ0E9AqcW-^oW0ky z@8I_nX|WaI(cn`#KIZQ|8gQz1E6VlZ6^DaQ-L1TzW_?{$l$yK z57c8=Z}5N*Lxdr=wmna0gB6{@qNu(I%Qy!PNhpdL_{d;KY;f_}i4b7VHm_@6LN~`R z!)9C?r)$hjoFw!Tz{cG30gQ0`J~u0(V#VAyuIDX_ooX!Sk>DzTE2+C%eNhO1QCxP) zACG=GOQyXjwwFz`w2vRhB~B{34?&N>hc~ZxoPTNq@h1gm2Jds;vAp|u|kqUri0|19$hgx WqbBEF0e*b3kIYZEzDz_L$owA(;2abH delta 3260 zcmZuzYj9K75x&Q|diWvRfGuMz+44iOWc0cbmzhSlJNbvbQtVAv~oX?NS?0|SgZe<2>R`$p{rD2me zZY?qImn2&6FI*?OjUCJ)-Z9!tv8;^EaZ80J(es)zx^#$PWtn_l!uu~e# z23FS2^gZD*xd%*rJMP^vJfazg`$zgmHN%7&_R5;92BRU(#Djr2->0n!#G`Q@+^0l? z2ZGU;yg1_o*$*SH9 z?&Z6OQ+E$1dqpTF!jJW9?)W3**+~=G->4g-lDl zU3^ybN7fP@lEcu-=6;w!H=>faQgT?Wp-xgxv^V2k>U`Qe1}t)J%^$ z#rqq!vS&qUS>tpCD$1m$<_3F&5*Y^}R40dPE(#{fFLSz3O8^py#J%nvytf4v6Xchu1XFu=;` zgxup!zxYpC1^b?G*sCFnz4pJBQ@R2mOGn)WYdvZw+}D7kioGBrj?VRXw3e&JCwU;K zU={K`uoEzdtG*)fTgSIuDk{j4SSX%$ViI;pOVyn~!UN^?`LDpfikX;^uI8>0sVbXw zVs3D5OR}hC$qM4l&4rjlWyfi{G z;yfUWW^nCW&hOTtYy1cR+!$Rg5#olw0@nEH0d{DI>%JH)*3)}iM>`vwYIRA3;)JJE}{rQa(JTtUoAmYan zZV_jO)>q?Wm&BnOKlpRC=7Zb(`97LGhj6DqAGtQO--$|hH@Gq8ZeTU~?cIk#`f?U03iFho$0D(C`ew*| zx|I1g(1|pTlJX02CoM+>p2Y3tPyAdW{HV zj1z*|N;9Yl&Ij;k9Rk)f??*tVIbIY$2%s4vv4my}MdSVie;jvb5x(>c;t7Q35ikI5 zLU;+`3<8!buSM_xq~{s_rV|mG7IHSe%L=JSX%kzC`^3lf+q*a{p=Aq{D9y9go<;w> zjH4!TLN%iixsC8Q5pO7mtAD29y}_TNWTjP!dJL^-K&_Zj+z2;OQVcL7eQJ~P%9eB8 zsa*G5;!18?Qf`9|JKtE$_AI>BXf&|H;&MwpQ^mhqnnsU+34aa1o6TQ`FU|B2TzFX3 za@2&MCzM14ULSavRG3!Oiy8}Ra%eIZ;EQNVb%?{4I@38bGXpJku(gjBiZ@&T>vDnw zTJRF8{u1Gq5#G@_7=Zq@O>NT!@L;F~u=lSSn16-Yw(B)gVaaU1J^`H|03NbNH|bpd zHmvA99CwcE3DMR-x)pRU5sAl?fIk}LzXmNMvKPVv*#A+q&RBBYBjpt*MTdoEW4h{ zWWn(OEJxvsJiU#DW(UH^9cgGt$qnom01e7O|x?E9XW8PWcS?ElH8={U>?Kwy^_g@!!;c~766|IxV;K!{vw3M zsh+YH^6fmT{uscUH8i9@9gLn1Zw+^$Yy{zcgaPsQo^8`{T++XVL%7OCpdn2qjw4SW zx->#@Mo?c_9cr4^DL&;d)$(lZg?HyI7y q#jn9nNSCBu6K`*+Ut7l9$EKD`JgE}TrxN_Q*|T82>ok)w-2VZ>?Dy&b 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 abe31e724489f2db2eccaadacdaa17c6ca0cf657..f4fe0a763f4f00c5ad86ac74d3824feee1711c11 100644 GIT binary patch delta 19 Zcmdl`w4sRWGcPX}0}z;IY~)h21OPra1swnY delta 19 Zcmdl`w4sRWGcPX}0}%XA-^itA2>?Rw1?B(% 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 6a934b9d5895915f6693d938c7cbd5029a78eb8b..daa403ee8f8d919b14802541fb90ccdda5880ffa 100644 GIT binary patch delta 19 Zcmcapd8d-=GcPX}0}z;IY~;FR0{}*_1~LEu delta 19 Zcmcapd8d-=GcPX}0}%XA-^g{z1^`QE2KxX2 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 ## 无新公告