衡水市网站建设_网站建设公司_SSL证书_seo优化
2026/1/10 0:04:09 网站建设 项目流程

除了基础的信息采集,这个项目还尝试了一些大模型能解锁的新玩法:用 LLM 对多篇新闻做摘要聚合、用多模态模型生成可视化日报图、把同一份信息源输出成不同形态(网站、钉钉群、领导简报)。从这个角度看,信息采集只是知识库建设的第一步,后续还有很多延伸空间。

这篇试图说清楚:

政府/机构网站的技术架构为什么容易获取、多信息源适配的工程技巧、NocoDB 作为轻量数据库的使用体验、钉钉推送时踩过的坑(图片显示问题、OSS 权限)、LLM 生成日报摘要的 Prompt 设计,以及从本地测试到服务器部署的完整链路。

⚠️ 合规提示

本文仅作为技术方案演示和学习参考。实际应用中请严格遵守以下原则: 1. 仅采集公开信息,不涉及登录后数据 2. 控制请求频率,避免对目标服务器造成压力 3. 内容版权归原网站,不做商业分发 4. 遵守《网络安全法》及相关法规 爬虫技术本身中性,用途必须合法合规。

1需求场景分析

从特定信息源定时获取信息,这件事其实一直存在各种工具层面的局限性。它本身是个繁琐但在很多场景下又不得不干的活儿。很多人干起来觉得痛苦,可能不是因为技术难度高,而是没有找到最适合自己场景的方法。

对方给出了明确的信息源:某行业主管部门官网的两个栏目、某发展研究中心、某垂直门户网站。本来想靠八爪鱼来解决,但实际用下来发现规则经常失效、维护成本高。八爪鱼不好用的时候,就只能退回到手动浏览、复制粘贴。更麻烦的是没有增量检测,每次都要人肉判断下某条新闻昨天是否看过。

市面上的工具其实不少,但各有各的问题。八爪鱼这类可视化爬虫,配置学习成本不低,对于"每天抓几个固定网站"这种简单场景来说有点重。RPA 工具擅长模拟复杂交互(登录、验证码),但用来爬静态页面就是大炮打蚊子,启动浏览器慢、还需要 GUI 环境。Scraping API 类的服务主要解决"给一个 URL 返回页面内容"的问题,但不支持"监控列表页增量更新"的逻辑,你还是得自己写去重。至于 RSS 目前大部分目标信息源没有,这也是传统政务网站的通病,信息公开意识有了,但 RSS 支持没跟上。

所以最终的选择是写几个简单的 Python 爬虫脚本,针对每个信息源做适配。

2政府/机构网站技术架构科普

在动手写脚本之前,有必要先了解一下这类网站的技术特点。政务/机构网站和电商类的互联网站在架构上差别很大:

对比维度电商/互联网网站政府/机构网站
前端架构SPA(React/Vue),客户端渲染,数据靠 API 动态加载传统 CMS,服务端渲染静态 HTML
反爬策略滑块验证、IP 风控、请求签名、参数加密通常无复杂反爬机制
爬取难度requests 很难搞,经常需要逆向或 Seleniumrequests + BeautifulSoup 基本够用

简单来说,电商网站会想尽办法不让你爬,而政务网站的信息本来就是公开的,技术上也没做太多限制。国内政务网站常见的 CMS 有 TRS(拓尔思)、方正翔宇等,这些系统的共同特点是:页面是服务端渲染的静态 HTML,列表页和详情页结构相对稳定,URL 规则通常有迹可循。

当然,技术上容易获取不意味着可以滥用。政务网站的服务器资源有限,高频请求可能导致服务器压力、IP 被封,甚至法律风险。合规的做法是控制请求频率(每秒不超过 1 次)、仅采集公开信息、不做商业分发。

3技术方案选择

先简单对比一下市面上常见的几种方案:

方案优点缺点适用场景
八爪鱼/后羿采集器可视化配置,无需编程学习成本高,稳定性一般,付费一次性采集任务
RPA(UiPath/影刀)能模拟复杂交互需要 GUI 环境,执行慢,维护成本高需要登录、验证码的场景
Scraping API无需部署,按量付费不支持增量监控逻辑,需要自己写去重一次性爬取特定页面
n8n+HTTP Request可视化工作流,定时触发Python 脚本进 n8n 有环境隔离问题,调试困难多系统集成场景
Python + requests灵活、可控、轻量需要编程能力✅ 增量监控、定制化逻辑

可以看到,不同方案各有各的适用场景。八爪鱼适合一次性采集任务,RPA 适合需要登录验证码的复杂交互,Scraping API 适合按需爬取特定页面。但对于"每天定时采集几个固定网站、做增量检测"这种场景,Python 脚本反而是最直接的选择。

最终选择了最朴素的 Python + requests + BeautifulSoup 方案。增量监控需要自定义逻辑——列表页解析、日期过滤、URL 去重、详情页爬取,这套流程用代码写最灵活。部署也简单,一个 Python 脚本放服务器上,crontab 定时跑就行。后续网站结构变了,改几行代码就能适配,维护成本可控。

最初其实考虑过用 n8n 做工作流编排(定时触发 → 执行脚本 → 通知),后来放弃了。主要原因是如果 n8n 只是当定时器用,Linux 自带的 crontab 更稳定;Python 脚本放进 n8n 的 Code Node 会遇到环境隔离问题(依赖、路径);而且这个场景有人工审核断点,两个工作流的衔接很别扭。总之,对于这个场景,n8n 反而是大炮打蚊子。

4多源适配的工程细节

实际写脚本的时候踩了不少坑。这里整理一下遇到的典型问题和解决思路:

问题类型具体表现解决方案
SSL 证书错误SSLCertVerificationError ,部分机构网站证书链不完整请求时设置 verify=False,同时禁用警告
子栏目结构差异同一网站下不同栏目的列表页结构不一致用简单的模式匹配识别分类标题
视频/音频内容部分新闻是视频,没有文字正文通过标题关键词识别自动跳过
外部链接部分新闻实际跳转到外部网站检测 URL 域名,非目标域名的直接跳过

其中有个值得单独说的点:部分网站的新闻会跳转到微信公众号文章。这类链接我选择直接跳过,原因是微信公众号有反爬机制,直接 requests 请求拿不到正文;另外微信生态相对封闭,爬取公众号内容存在一定法律风险;而且公众号文章通常在官网也有对应版本,跳过不影响信息覆盖。

代码结构上,从最初的单文件脚本重构成了模块化架构。每个网站一个独立的爬虫类,继承统一的基类,实现 fetch_news_list() 和 fetch_news_content() 两个方法就行。后续新增网站只需要写一个新的适配文件,不用改动主流程。

5数据存储与去重

存储方案对比了几种选择:

方案优点缺点
Excel简单直接并发写入有问题,无法通过 API 查询
SQLite轻量级数据库需要写 SQL,非技术人员不好用
飞书多维表格云端协作,界面友好API 有调用频率限制,数据存在第三方
NocoDB类 Airtable 体验,支持 REST API,本地部署需要 Docker 环境

最开始其实考虑过用飞书多维表格,毕竟界面友好、支持协作。但后来还是选择了本地部署的方案,主要是考虑到数据安全和长期稳定性。云端服务的 API 限制、数据归属权、后续迁移成本都是隐患。

NocoDB 是一个开源的 Airtable 替代品,GitHub 上有 61k+ 的星标,社区很活跃。它可以把 MySQL、PostgreSQL 甚至 SQLite 包装成类似 Airtable 的 Web 界面,支持 REST API 读写。对于这个场景来说刚好够用:对方可以直接在网页上查看、筛选、导出,不需要懂数据库;脚本通过 API 写入数据,接口设计和 Airtable 类似,上手很快。如果觉得 Docker 部署麻烦,SQLite + 一个简单的 Web 界面(比如 sqlite-web 或者 Datasette)也是类似的思路。

NocoDB开源地址:https://github.com/nocodb/nocodb

去重逻辑比较简单:用新闻 URL 作为唯一标识,每次运行前先查询数据库里已有的 URL 列表,只处理不在列表里的新增内容。另外为了区分不同来源,设计了层级化的 Source 字段,比如"网站 A-要闻栏目"、"网站 B-媒体之声"这种格式,方便后续在数据库里按来源筛选和统计。

6完整工作流设计

整体工作流分成三个阶段:采集阶段、人工审核和日报生成阶段。用一张图来展示会更清晰:

采集阶段由定时任务触发(比如设置crontab 每天早上 8 点),运行采集脚本,依次抓取列表页、日期过滤、URL 去重、爬取正文、入库。采集完成后会推送一条钉钉消息,告诉对方"采集完成,共 N 条待审核",消息里附带审核地址(NocoDB 的 Web 界面)和生成日报的链接。

日报生成阶段是人工触发的。对方在数据库里审核完新闻(把 Status 改成"已发布"),然后点击钉钉消息里的"生成日报"链接。这个链接会调用一个 FastAPI 端点,查询所有已发布的文章,调用 LLM 生成日报摘要,最后推送到钉钉群。

关于日报触发机制,考虑过几种方案:

方案优点缺点
双定时任务最简单必须在固定时间前完成审核
API 手动触发灵活,审核完随时点需要额外开发 API 服务
数据库 Webhook自动化程度高配置复杂,每条更新都触发

最终选择了 API 手动触发。原因很简单:审核完成后点击链接即可,不受时间限制;FastAPI 几十行代码就能搞定,开发成本很低。

日报输出目前规划了两种形式。一种是正式的 Markdown 版:LLM 输出结构化的 JSON(标题、分类、一句话摘要),用模板渲染成 Markdown,通过钉钉 Markdown 消息推送。另一种是美观的图片版:调用多模态 API 生成信息图,内容压缩、视觉效果好,适合朋友圈或群分享。

7本地测试与服务器部署

本地测试和服务器部署的流程略有不同,主要区别在于触发方式。

本地测试时需要手动运行两个脚本。先运行 python main.py 完成采集入库,然后打开 NocoDB 网页界面进行人工审核(把 Status 改成"已发布"),最后运行 python generate_daily.py 生成日报。两个脚本之间有一个人工审核的断点,毕竟不是所有采集到的新闻都需要发布。

服务器部署之后,采集脚本由 crontab 定时触发,每天早上自动运行。采集完成后钉钉会推送一条消息,里面带着审核链接和生成日报的链接。对方在手机上收到通知,点击链接可以直接打开 NocoDB 进行审核,审核完再点击"生成日报"链接触发 FastAPI 端点。整个过程不需要登录服务器。

简单对比一下两种模式的差异:

环节本地测试服务器部署
采集触发手动python main.pycrontab 定时自动
审核界面http://localhost:8080http://服务器 IP:8080
日报触发手动python generate_daily.py点击钉钉消息链接
API 服务可选必须运行

部署架构也很简单:一台云服务器上跑两个 Docker 容器(NocoDB 和 FastAPI),加一个 crontab 定时任务。NocoDB 暴露 8080 端口用于审核,FastAPI 暴露 8000 端口用于触发日报生成。两个服务都通过钉钉 Webhook 推送消息。

这个方案能跑通的前提条件其实很简单:目标网站是传统 CMS、静态 HTML、无复杂反爬;请求量很小,每天一次、每次几十条;人工审核是必要的,不追求全自动;部署足够简单,两个 Docker 容器加一个 crontab 就搞定。

8IM 推送与日报生成的工程细节

这部分踩了些坑,值得单独拿出来说一下。本文以钉钉为例演示推送和审核的细节,实际上也可以换成企业微信、飞书或者内部的 IM 工具,实现逻辑是类似的。钉钉有两种推送方式,适用于不同场景:

方式推送目标获取方式适用场景
工作通知个人(App 内推送)创建企业内部应用,获取 Client ID/Secret/Agent ID采集完成提醒
群机器人群聊在群设置中添加自定义机器人,获取 Webhook URL日报发布

这个项目里组合使用了两种方式:采集完成后通过工作通知推给运营负责人(私信更容易引起注意),日报生成后通过群机器人发送到群里(方便大家一起看)。

关于图片消息显示问题。一开始用 image 消息类型发送图片,结果在群里显示为一个小缩略图(类似表情),无法点击放大。查了文档才发现,钉钉群机器人的 image 消息类型本身就有这个限制。解决方案是把图片嵌入到 Markdown 消息中:

# ❌ 错误方式:单独发送图片消息 payload = {"msgtype": "image", "image": {"picURL": url}} # ✅ 正确方式:在 Markdown 中嵌入图片 content = f"## 日报标题 内容... ![日报图片]({image_url})" payload = {"msgtype": "markdown", "markdown": {"title": "日报", "text": content}}

关于 LLM 日报生成,也有一些 Prompt 优化的经验。钉钉的 Markdown 渲染能力比较有限,如果不针对性优化,LLM 输出的内容会标题和正文挤在一起、列表项没有视觉分隔、整体看起来像一大段文字。优化后的 Prompt 要点是每条新闻用引用块包裹、标题加粗、用分隔线区分不同部分、适当添加 emoji 增加可读性。

图片生成方面,最终选择了 gemini-3-pro-image-preview(也就是 Nano Banana Pro,通过 OpenRouter 调用)。这个模型是目前端到端多模态生图能力较强的选择之一,中文提示词支持好、输出质量稳定。这种原生的多模态能力,给日报输出解锁了一些新的可能,不只是文字摘要,还能自动生成美观的信息图,适合在群里分享。

完整的日报生成流程是:LLM 生成日报摘要(DeepSeek V3.2)→ 多模态模型生成信息图(Gemini)→ 上传图片到 OSS 获取公网 URL → 构造 Markdown 消息嵌入图片 → 发送到钉钉群。

9

写在最后

跳出这个项目来看,这类需求其实非常普适。政策研究机构追踪部委公告、行业协会收集会员单位新闻、企业市场部监控行业资讯、投资机构追踪标的公司公告,本质上都是"从若干固定信息源定期采集增量内容"。这类需求的共同特点是目标网站技术上不复杂、需要增量监控而非一次性采集、对实时性要求不高、体量也不大。

大模型的成熟给这类需求解锁了一些新的可能。以前信息采集就只是采集,输出的是原始素材,后续的摘要、加工、分发还得人工来。现在可以做到多篇新闻自动聚合摘要、生成结构化的日报输出、甚至用多模态模型生成可视化的信息图。同样一份信息源,可以输出给网站、给 IM 群、给领导简报,形态各异但流程自动化。这就不只是信息采集了,而是知识库素材生成的第一步。

最后还是要强调一下合规问题,爬虫技术本身中性,但用途必须合法合规;控制请求频率,不对目标服务器造成压力;仅采集公开信息,不涉及登录后数据;内容版权归原网站,不做商业分发。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询