From fd8b1978535e92838e76a974905e21b705390faa Mon Sep 17 00:00:00 2001 From: Sisyphus Date: Wed, 22 Jul 2026 15:13:00 +0800 Subject: [PATCH] =?UTF-8?q?feat(xkgroup):=20=E5=8A=A0=203=20=E4=B8=AA?= =?UTF-8?q?=E6=96=B0=E8=BF=87=E6=BB=A4=E8=A7=84=E5=88=99=20(=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B+=E5=A4=9A=E6=AC=A1=E8=AF=A2=E4=BB=B7=E6=A0=87?= =?UTF-8?q?=E9=A2=98+=E7=BB=84=E7=BB=87=E7=99=BD=E5=90=8D=E5=8D=95)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【新规则】 1. DEFAULT_TYPES 增加 D (流标公告), 现在抓寻源(C) + 流标(D) 2. RETRY_PATTERN: 标题含 二次/三次/四次/.../九次 3. ORG_WHITELIST: 新疆宝地矿业股份有限公司 + 新疆火烧云铅锌矿有限责任公司 【触发时机】 这三个条件作为附加过滤层, 在原有 --keyword (DB CrawlerConfig.keywords) 之后生效 【验证(生产)】 累计 168 条历史状态命中: - 单 RETRY: 49 条 - 单 ORG: 10 条 - RETRY + ORG: 3 条 (火烧云绿色矿山, 宝地审计二次/三次) ⚠️ 注意: 加上 DB 关键词 (电缆/钢材/阀门/管材/设备/机械/矿业) 后只剩 2 条命中 关键词是为电力工程领域配的, 新规则聚焦宝地/火烧云的多次询价, 两者交集很小. 建议清掉新矿 DB 的 keywords 让新规则单独生效. --- scripts/tender-fetcher/fetch-xkgroup.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/scripts/tender-fetcher/fetch-xkgroup.py b/scripts/tender-fetcher/fetch-xkgroup.py index fe376a9..d990fdd 100755 --- a/scripts/tender-fetcher/fetch-xkgroup.py +++ b/scripts/tender-fetcher/fetch-xkgroup.py @@ -41,7 +41,16 @@ NOTICE_TYPES = { "D": "流标公告", "B": "结果公示", } -DEFAULT_TYPES = ["C"] # 默认只抓取寻源公告 +DEFAULT_TYPES = ["C", "D"] # 抓取寻源公告 + 流标公告 + +# 多次询价标题正则 (匹配 二次/三次/四次/.../九次) +RETRY_PATTERN = re.compile(r"[二三四五六七八九]次") + +# 发布组织白名单 (新矿供应链平台关注的发布方) +ORG_WHITELIST = ( + "新疆宝地矿业股份有限公司", + "新疆火烧云铅锌矿有限责任公司", +) OUTPUT_BASE = os.path.expanduser("~/desktop/招标公告") @@ -301,6 +310,16 @@ def run(): filtered_count += 1 continue + # 多次询价标题过滤 (二次/三次/四次...) + if not RETRY_PATTERN.search(notice["title"]): + filtered_count += 1 + continue + + # 发布组织白名单 + if not any(org_name in notice["org"] for org_name in ORG_WHITELIST): + filtered_count += 1 + continue + notice_id = notice["id"] # 去重