爬虫结合AI实战:自动提取网页正文并生成高质量结构化摘要
做资讯聚合、知识库建设、行业舆情监控这类项目时传统爬虫只能拉回一堆混杂着广告、导航、无关推荐的HTML源码后续的正文提纯、内容摘要、信息结构化全靠人工整理效率极低而简单粗暴地把整页HTML丢给大模型处理又会遇到Token成本飙升、摘要逻辑混乱、输出格式不可控的问题。落地一套可用的AI摘要系统核心不是“爬虫调个大模型API”这么简单而是要做全链路的工程化优化先把网页里的无效信息砍掉80%再通过语义分片解决长文本上下文限制最后用结构化Prompt约束输出质量。我们在内部资讯聚合项目中落地这套方案后人工整理成本下降80%单篇处理成本降低60%摘要信息合格率从62%提升到94%。本文从架构设计、正文提纯、分片策略、Prompt优化到工程落地完整拆解可复现的全流程实现方案。一、整体架构为什么不能是“爬虫直接调API”很多人做的第一版AI摘要就是爬虫抓完页面直接把HTML字符串塞给大模型一句“帮我总结”了事。这种简陋方案在生产环境里完全站不住脚。1.1 简陋方案的三大致命问题成本极高普通资讯页的HTML源码包含大量标签、样式、广告、导航代码有效正文占比通常不足20%。一篇5000字的文章HTML对应的Token量可能超过3万绝大部分都是无效开销。质量极差大模型会被广告、相关推荐、页面噪音干扰摘要里经常混入无关信息甚至出现“小编推荐”“点击关注”这类不属于正文的内容。稳定性差长网页直接超出模型上下文限制报错截断不同网站的页面结构差异大输出质量波动极大完全不可控。1.2 全链路优化架构工业级落地需要六层处理逻辑逐层收敛输入、控制输出质量整体流程如下URL输入网页抓取静态/动态页兼容正文提纯剔除标签/广告/噪音内容清洗过滤无效段落/格式归一语义分片长文按语义切块AI摘要生成结构化Prompt约束结果校验格式/内容合规检查结构化存储核心优化思路是能靠规则解决的绝不消耗大模型Token。把清洗、提纯、分片这些前置工作做扎实后面的AI生成环节才能又快又省又准。二、正文精准提纯先砍掉80%无效Token这是整个流程里投入产出比最高的一步。不要自己写正则、写XPath去抠正文换个网站规则就失效维护成本极高。工业界有成熟的正文提取工具专门做噪音过滤效果远胜手写规则。2.1 工具选型trafilatura 优于 newspaper3k主流的Python正文提取库有两个实测差异非常明显newspaper3k老牌库适配英文站效果不错中文站提取率偏低经常漏段落、混入广告。trafilatura专注正文提取支持多语言对中文资讯、博客、新闻页的适配度极高能精准识别导航、广告、相关推荐、版权声明并剔除提取准确率比前者高30%以上。安装非常简单pipinstalltrafilatura requests2.2 基础提取实现只需要几行代码就能拿到纯净的正文文本自动剔除HTML标签、广告、导航栏、页脚信息importtrafilaturaimportrequestsdeffetch_clean_text(url:str)-str:抓取网页并提取纯净正文try:headers{User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36}resprequests.get(url,headersheaders,timeout15)resp.encodingresp.apparent_encoding htmlresp.text# 核心提取正文自动过滤噪音texttrafilatura.extract(html,include_linksFalse,# 剔除链接include_imagesFalse,# 剔除图片include_tablesTrue,# 保留表格内容deduplicateTrue# 去重重复段落)returntextiftextelseexceptExceptionase:print(f网页抓取失败{url}:{str(e)})return实测下来一篇普通资讯页原始HTML约2.8万Token提取后的正文仅约5000Token无效内容剔除率超过80%单篇处理成本直接降了四倍。2.3 二次清洗进一步压缩无效内容提取后的正文里还可能残留“免责声明”“版权所有”“转载请注明”“相关推荐”这类固定模板内容需要再做一次规则清洗短段落过滤少于10个字的段落直接丢弃大多是分割线、空行、小标题碎片。关键词黑名单匹配“免责声明”“版权声明”“本文转载”“关注我们”这类固定话术整段剔除。格式归一去掉多余的换行、空格统一段落分隔避免无意义的空白占用Token。defclean_text(text:str)-str:正文二次清洗blacklist[免责声明,版权声明,转载请注明,来源,作者,关注我们]linestext.split(\n)clean_lines[]forlineinlines:lineline.strip()# 过滤过短行iflen(line)10:continue# 过滤黑名单内容ifany(wordinlineforwordinblacklist):continueclean_lines.append(line)return\n.join(clean_lines)三、长文本语义分片解决上下文超限问题短文章可以直接丢给大模型但行业报告、深度长文动辄上万字很容易超出模型的上下文窗口。粗暴按字符数硬切会把完整语义拆断导致摘要失真、信息遗漏。3.1 语义优先的分片策略正确的分片逻辑是按段落语义分组而不是按固定字符数切割以自然段落为最小单位不拆分单段内容。按Token数累加达到阈值就切分为一个分片。相邻分片保留1~2个段落的重叠避免语义断层。优先按标题、空行等天然分隔点切分。可以用tiktoken精准计算Token数控制每个分片的大小在模型窗口的70%以内预留空间给Prompt和输出。importtiktoken encodertiktoken.encoding_for_model(gpt-3.5-turbo)defcount_tokens(text:str)-int:计算文本Token数returnlen(encoder.encode(text))defsemantic_split(text:str,max_tokens:int3000,overlap:int1)-list:语义分片按段落切保留重叠paragraphs[pforpintext.split(\n)ifp.strip()]chunks[]current_chunk[]current_len0forparainparagraphs:para_lencount_tokens(para)ifcurrent_lenpara_lenmax_tokensandcurrent_chunk:chunks.append(\n.join(current_chunk))# 保留重叠段落current_chunkcurrent_chunk[-overlap:]ifoverlap0else[]current_lensum(count_tokens(p)forpincurrent_chunk)current_chunk.append(para)current_lenpara_lenifcurrent_chunk:chunks.append(\n.join(current_chunk))returnchunks3.2 长文摘要的 Map-Reduce 思路超过一万字的长文不要指望一次生成完整摘要信息密度会非常差。推荐用两段式生成Map阶段每个分片各自生成局部摘要提炼该部分的核心信息。Reduce阶段把所有局部摘要汇总再生成一次全文摘要保证整体逻辑连贯。这种方式既能处理任意长度的文本又能保证摘要的信息覆盖率比硬塞全文的效果好很多。四、Prompt工程让输出稳定、可控、符合业务需求大模型输出质量波动90%的原因是Prompt写得太随意。一句“帮我总结一下”等于把所有控制权都交给了模型结果自然不可控。4.1 高质量Prompt的四个核心要素角色明确给模型设定具体身份比如“资深资讯编辑”“行业分析师”让输出风格匹配场景。格式固定明确要求输出结构比如总分结构、分点罗列、JSON格式方便后续解析存储。约束清晰限定字数、禁止编造、要求只基于原文、保留关键数据减少幻觉。范围限定明确摘要的侧重点比如技术要点、商业信息、事件时间线不要泛泛而谈。4.2 三类即用型Prompt模板模板1通用资讯摘要适合新闻、博客你是一名资深资讯编辑请根据以下文章内容生成一份精简摘要。 要求 1. 不超过200字分3句话以内表述 2. 提炼核心事件、关键数据、核心结论 3. 只基于原文内容不得编造信息不要加入主观评价 4. 保留时间、主体、核心结果三个关键要素 文章内容 {content} 摘要模板2技术文章结构化摘要适合技术博客、文档你是一名技术编辑请根据以下技术文章输出结构化摘要。 严格按照JSON格式返回包含以下字段 - core_topic: 文章核心主题15字以内 - key_points: 核心技术要点数组形式3-5条 - tech_stack: 涉及的技术栈数组形式 - conclusion: 文章结论50字以内 注意所有内容必须完全来自原文不得补充编造。 文章内容 {content}模板3行业报告深度摘要适合长文、报告你是一名行业分析师请根据报告内容生成深度摘要。 要求 1. 先给出一句话核心结论 2. 分3个维度展开分析行业现状、核心趋势、风险与机会 3. 保留原文中的关键数据、百分比、排名信息 4. 总字数控制在500字以内 报告内容 {content}4.3 强制结构化输出技巧要让100%的请求都返回标准JSON不要靠模型自觉要用工具调用Function Calling或者官方JSON模式约束。以OpenAI兼容接口为例fromopenaiimportOpenAI clientOpenAI(api_keyyour_api_key,base_urlyour_base_url# 国内模型通用兼容格式)defgenerate_summary(text:str)-dict:生成结构化摘要强制JSON输出responseclient.chat.completions.create(modelgpt-4o-mini,response_format{type:json_object},# 强制JSON模式temperature0.3,# 降低随机性保证输出稳定messages[{role:system,content:你是专业的内容摘要助手严格按照JSON格式输出摘要结果包含title、summary、keywords三个字段。},{role:user,content:f请为以下文章生成摘要\n{text}}])returneval(response.choices[0].message.content)# 生产环境建议用json.loads把temperature调低到0.2~0.4可以大幅降低输出的随机性相同内容多次调用的结果一致性会明显提升非常适合生产环境。五、工程化落地批量处理、成本控制与容错单篇跑通只是开始批量处理几万、几十万篇网页还要考虑性能、成本、稳定性。5.1 接入Scrapy Pipeline批量自动化处理如果是用Scrapy做批量爬虫只需加一个自定义Pipeline就能实现每抓取一篇文章自动生成摘要并存库# pipelines.pyclassAISummaryPipeline:defprocess_item(self,item,spider):ifitem.get(content):# 清洗正文clean_contentclean_text(item[content])# 生成摘要summary_resultgenerate_summary(clean_content)# 回填到itemitem[summary]summary_result.get(summary,)item[keywords]summary_result.get(keywords,[])item[ai_title]summary_result.get(title,item[title])returnitem5.2 成本优化把Token开销打下来前置清洗做到极致能在规则层去掉的内容绝对不留给大模型。正文提纯这一步已经能省掉70%以上的Token成本。分级调用模型普通短资讯用轻量模型如gpt-4o-mini、通义千问轻量版成本只有大模型的十分之一深度长文、重要报告再用强模型。结果缓存相同URL、相同内容的文章只生成一次摘要结果存缓存库重复抓取直接复用。资讯聚合类场景缓存命中率能到40%以上。控制输出长度Prompt里严格限制字数输出越少成本越低速度也越快。5.3 容错与降级大模型API不是100%稳定必须有降级方案重试机制接口超时、报错时指数退避重试2次不要直接失败。降级方案连续调用失败时自动降级为TextRank算法提取关键词截取首段的简易摘要保证流程不中断。结果校验返回结果做格式检查如果不是合法JSON、或者字数异常就重生成一次避免脏数据入库。六、落地踩坑总结不要直接喂HTML给大模型。这是新手最容易犯的错既浪费钱效果又差正文提纯是必做环节。不要迷信大模型能力。规则能搞定的清洗、格式化、过滤就不要消耗模型能力大模型只做最核心的语义提炼。幻觉问题无法完全消除但可以大幅降低。Prompt里强调“只基于原文”“禁止编造”配合低temperature再加上结果校验能把幻觉出现率降到1%以下。中文场景优先选中文原生模型。很多人默认用GPT但国内模型对中文语境、行业黑话的理解更好价格也更便宜比如通义千问、文心一言的轻量版处理中文摘要的性价比很高。七、进阶拓展方向这套基础方案跑通后可以继续拓展更多能力多模态摘要结合页面中的图片、图表生成图文结合的摘要适合报告、评测类内容。实体与标签提取让大模型同时提取文章中的人物、机构、事件自动打分类标签支撑内容检索。多文档聚合把同一主题的多篇文章汇总生成行业动态周报、事件全景梳理。最后提醒所有网页抓取与内容处理都要严格遵守《网络安全法》与版权相关规定仅采集公开合法数据尊重原作者权益不得用于商业侵权用途。

相关新闻

通配符* ? 文件匹配筛选实战

通配符* ? 文件匹配筛选实战

通配符* ? []文件匹配筛选实战 一、实验目的 熟练使用通配符批量匹配、筛选系统文件,实现批量操作。 二、实验环境 CentOS7.9系统 三、操作步骤 匹配所有txt后缀文件 Bash ls *.txt 匹配单个任意字符文件 Bash ls test?.txt 匹配指定区间字符文件 Bash …

2026/7/31 1:09:08阅读更多 →
分布式一致性协议:从Paxos到Raft

分布式一致性协议:从Paxos到Raft

分布式一致性协议:从Paxos到Raft 几个人开会决定一件事: 简单多数:3人中2人同意就行 全体一致:必须4人全部同意 独裁制:1人说了算 分布式一致性协议就是让分布在多台机器上的数据"达成共识"的规则。 为什么需要一致性协议? 问题:分布式系统中,多个节点需要…

2026/7/31 1:09:08阅读更多 →
G-Helper:华硕笔记本性能优化的轻量级革命,告别Armoury Crate臃肿体验

G-Helper:华硕笔记本性能优化的轻量级革命,告别Armoury Crate臃肿体验

G-Helper:华硕笔记本性能优化的轻量级革命,告别Armoury Crate臃肿体验 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, Pro…

2026/7/31 1:09:08阅读更多 →
HY-Motion+Unity实战:AI驱动3D数字人实时交互动作生成方案

HY-Motion+Unity实战:AI驱动3D数字人实时交互动作生成方案

1. 项目概述:当数字人需要“活”起来最近在做一个虚拟展厅的项目,客户的核心需求是让里面的3D数字人导览员能和访客进行实时问答互动。这听起来很酷,但实现起来第一个拦路虎就是动作——你总不能指望数字人像个木头桩子一样杵在那里&#xff…

2026/7/31 2:16:17阅读更多 →
Footprint图表与订单流分析:金融交易中的成交量洞察技术

Footprint图表与订单流分析:金融交易中的成交量洞察技术

在金融交易领域,成交量分析是判断市场参与者行为的关键技术之一。Footprint 图表作为一种高级成交量分析工具,能够直观展示每个价格水平上的买卖力量对比,帮助交易者识别潜在的支持阻力位和市场转折点。本文将深入解析 Footprint 交易的核心原…

2026/7/31 2:16:17阅读更多 →
Python、C++、JavaScript三语言实现猜数字游戏:从核心逻辑到工程实践

Python、C++、JavaScript三语言实现猜数字游戏:从核心逻辑到工程实践

1. 项目概述:为什么选择“猜数字”作为多语言入门示例在编程教学和自学领域,“猜数字”游戏几乎是一个图腾般的存在。它简单到一句话就能说清规则,却又完整地涵盖了输入输出、条件判断、循环控制、随机数生成等核心编程概念。对于初学者而言&…

2026/7/31 2:16:17阅读更多 →
智能网络资源捕获工具:3步掌握全网数据提取终极秘籍

智能网络资源捕获工具:3步掌握全网数据提取终极秘籍

智能网络资源捕获工具:3步掌握全网数据提取终极秘籍 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 还在为无法下…

2026/7/31 2:16:17阅读更多 →
Unity资源管理实战:YooAsset核心技巧与热更新全解析

Unity资源管理实战:YooAsset核心技巧与热更新全解析

1. 项目概述:为什么YooAsset值得你投入时间如果你是一名Unity开发者,最近在项目资源管理上感到力不从心,比如热更新流程繁琐、内存管理混乱,或者单纯厌倦了Addressables的复杂配置,那么“YooAsset”这个名字很可能已经…

2026/7/31 2:16:17阅读更多 →
UE5 NPC AI方案深度对比:Behavior Tree、Mass Entity与AI Agent选型指南

UE5 NPC AI方案深度对比:Behavior Tree、Mass Entity与AI Agent选型指南

1. 项目概述:UE5 NPC AI方案的三岔路口在UE5里做NPC AI,就像给一个角色注入灵魂。几年前,Behavior Tree几乎是唯一的选择,它稳定、直观,像一本写好的剧本,让NPC按部就班地行动。但随着项目规模的膨胀&#…

2026/7/31 2:13:40阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/30 15:03:16阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/30 12:22:27阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/30 15:13:02阅读更多 →
物理复制比逻辑复制好在哪?数据库复制原理详解

物理复制比逻辑复制好在哪?数据库复制原理详解

数据库复制是把主库数据同步到备库的机制,分为逻辑复制和物理复制两种。逻辑复制传输的是 SQL 语句或行变更事件,物理复制传输的是存储引擎底层的物理日志。阿里云 PolarDB(云原生数据库)采用物理复制,在同步延迟、数据…

2026/7/31 0:00:40阅读更多 →
BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bilib…

2026/7/31 0:00:41阅读更多 →
有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

当前,游戏行业的“DataAI融合”已从概念验证进入价值落地阶段。根据IDC 2025年数据,中国AI游戏云市场规模已达18.6亿元;同时,游戏研发环节AI渗透率高达86%,生成式AI内容普及率超过50%。面对庞大的市场,游戏…

2026/7/31 0:00:41阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/31 0:49:33阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/30 4:47:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/30 15:43:46阅读更多 →