当前位置: 首页 > article >正文

Python实现全站链接爬取工具-助力打造AI知识库

Python实现全站链接爬取工具助力打造AI 知识库标签#Python #Playwright #爬虫 #AI知识库日期2026-05-01摘要本文介绍一个自己开发的基于 Playwright 的全站站内链接爬取工具通过递归爬取 BeautifulSoup 解析实现自动收集网站所有内部链接支持导出为 Markdown 格式方便批量导入 AI 知识库进行提问式学习。前言最近在学习 NiceGUI 时发现官方文档内容非常丰富组件数量有一百多个。按照传统方式逐页阅读效率很低。有了 AI 之后更高效的学习方式是把官方文档变成你的私人 AI 知识库用提问代替搜索。具体分三步走收集抓取技术网站的所有站内链接导入将链接批量导入 AI 知识库工具我用的是腾讯 IMA对话像和老师一对一交流一样用自然语言提问学习本文重点介绍如何高效抓取全站链接。一、实现原理 核心思路用户输入URL ↓ 递归爬取每个页面的内部链接 ↓ BeautifulSoup 解析 HTML提取 a 标签 ↓ 过滤同域名、非锚点、HTTP/HTTPS ↓ 去重后保存为 Markdown 文件 关键技术点技术作用Playwright渲染 JavaScript获取动态加载后的完整 HTMLBeautifulSoup解析 HTML快速定位所有链接urljoin将相对路径转换为绝对路径递归爬取从首页开始自动发现并访问所有子页面二、完整源码 全站站内链接爬取脚本 功能递归爬取指定网站的所有内部链接自动过滤锚点链接 frombs4importBeautifulSoupfromurllib.parseimporturljoin,urlparsefrommy_playwrightimportMyPlaywrightdefget_internal_links(base_url:str)-set[str]: 递归爬取全站内部链接 Args: base_url: 目标网站根 URL Returns: visited: 所有发现的内部链接集合 visited:set[str]set()# 已访问的 URL 集合pageMyPlaywright(headlessTrue).page# 获取 Playwright Page 对象target_netlocurlparse(base_url).netloc# 提取目标网站的域名def_crawl_links(url:str)-None:爬取指定 URL 的所有内部链接print(f总数{len(visited)}[] 正在抓取:{url}...)visited.add(url)try:page.goto(url,wait_untilnetworkidle,timeout30000)page.wait_for_timeout(500)# 等待确保页面加载完成htmlpage.content()soupBeautifulSoup(html,html.parser)forainsoup.find_all(a,hrefTrue):hrefa[href]full_urlurljoin(url,href)parsedurlparse(full_url)# 过滤非内部链接ifnotparsed.netloctarget_netloc:continue# 跳过其他域名的链接if#infull_url:continue# 跳过锚点链接ifparsed.schemenotin(http,https):continue# 跳过非 HTTP/HTTPS 链接iffull_urlinvisited:continue# 跳过已访问的链接_crawl_links(full_url)# 递归爬取子链接exceptExceptionase:print(f[!] 请求失败:{url}-{e})_crawl_links(base_url)print(f[✓] 已完成{len(visited)}条链接的爬取)returnvisiteddefsave_to_markdown(links,output_pathinternal_links.md):将链接列表保存为 Markdown 文件每 10 条为一组sorted_linkssorted(links)chunk_size10chunks[sorted_links[i:ichunk_size]foriinrange(0,len(sorted_links),chunk_size)]markdown_content[]markdown_content.append(# 全站内部链接列表\n)markdown_content.append(f共发现 **{len(links)}** 条链接\n\n)markdown_content.append(---\n\n)foridx,chunkinenumerate(chunks,1):start_num(idx-1)*chunk_size1markdown_content.append(f### 第{start_num}-{start_numlen(chunk)-1}条链接\n\n)forlinkinchunk:markdown_content.append(f{link}\n)markdown_content.append(\n)withopen(output_path,w,encodingutf-8)asf:f.writelines(markdown_content)print(f[✓] 已保存到:{output_path})if__name____main__:base_urlhttps://nicegui.io/linksget_internal_links(base_url)save_to_markdown(links)三、源码解析 MyPlaywright 封装这里的MyPlaywright是我对 Playwright 的封装核心特点特性说明永久上下文浏览器状态持久化只需创建一次自动资源释放程序退出时自动关闭浏览器跨平台Windows 显示浏览器Linux 自动无头自动下载监听下载事件自动保存文件使用方式极其简单pageMyPlaywright(headlessTrue).page page.goto(https://example.com) 链接过滤逻辑# 1. 只爬取同域名的链接ifnotparsed.netloctarget_netloc:continue# 2. 跳过锚点链接如 #sectionif#infull_url:continue# 3. 只处理 HTTP/HTTPS 链接ifparsed.schemenotin(http,https):continue# 4. 已访问过的跳过iffull_urlinvisited:continue 递归爬取流程nicegui.io (起始页) ├── /documentation │ ├── /documentation/button │ │ └── (发现更多子链接...) │ ├── /documentation/input │ └── ... ├── /examples │ └── ... └── ...四、使用效果以 NiceGUI 官网为例运行脚本后总数0 [] 正在抓取: https://nicegui.io/... 总数1 [] 正在抓取: https://nicegui.io/documentation... 总数2 [] 正在抓取: https://nicegui.io/documentation/button... ... [✓] 已完成 139 条链接的爬取 [✓] 已保存到: internal_links.md生成的 Markdown 文件示例# 全站内部链接列表 共发现 **139** 条链接 --- ### 第 1-10 条链接 https://nicegui.io https://nicegui.io/documentation https://nicegui.io/documentation/button https://nicegui.io/documentation/switch ...每 10 条链接为一组方便批量导入到 IMA 等 AI 知识库工具。五、后续计划这个工具将被整合到类似于龙虾的Agent中作为一个自动化子任务AI Agent ├── 任务学习 NiceGUI │ ├── 子任务爬取全站链接 → 调用 crawl_internal_links.py │ ├── 子任务整理分组格式 │ └── 子任务导入 AI 知识库 └── ...目标是实现一句话让 AI 自动完成整个学习准备工作。六、总结 要点回顾Playwright解决了 JavaScript 动态渲染页面的抓取问题递归爬取确保覆盖全站所有页面BeautifulSoup高效解析 HTML 中的链接Markdown 分组导出方便批量导入 AI 知识库配合 AI 知识库实现提问式学习效率倍增 适用场景学习新技术框架的官方文档构建个人技术知识库批量收集某网站的所有页面⚠️ 注意事项如果使用腾讯IMA知识库的话很多网上资源可能已经有人已经整理过了只要点击IMA的“发现”按钮就可以搜索并寻找自己感兴趣的知识库订阅即可。七、相关资源学习人最好的时代技术学习实践分享Playwright理解与封装本文为本人原创首发于掘金。如果你有任何问题或想法欢迎在评论区交流

相关文章:

Python实现全站链接爬取工具-助力打造AI知识库

Python实现全站链接爬取工具:助力打造AI 知识库 标签:#Python #Playwright #爬虫 #AI知识库 日期:2026-05-01 摘要:本文介绍一个自己开发的基于 Playwright 的全站站内链接爬取工具,通过递归爬取 BeautifulSoup 解析实…...

Missy:构建安全可控的本地AI助手平台,从零部署到高级应用

1. 项目概述:一个为Linux而生的安全至上的AI助手如果你和我一样,对市面上那些“云优先”、数据去向不明的AI助手感到不安,同时又渴望一个能真正理解你的指令、帮你自动化处理本地任务的智能伙伴,那么你一定会对Missy感兴趣。Missy…...

2026最权威的五大AI科研平台推荐榜单

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 存在一类智能工具之为AI写作软件,它借助自然语言处理以及深度学习技术予以开发&a…...

Android AI聚合聊天应用RikkaHub:原生开发与架构设计全解析

1. 项目概述:一个原生Android LLM聚合聊天客户端 如果你和我一样,在手机上同时用着好几个AI助手——比如需要OpenAI的GPT-4o来处理复杂逻辑,用Claude来写长文,用DeepSeek来查代码,偶尔还想试试本地部署的Ollama模型——…...

从裸机到RT-Thread:RISC-V C驱动分层架构设计(HAL+MCU Abstraction Layer+Board Support Package三阶演进)

更多请点击: https://intelliparadigm.com 第一章:从裸机到RT-Thread:RISC-V C驱动分层架构设计(HALMCU Abstraction LayerBoard Support Package三阶演进) 在 RISC-V 嵌入式系统开发中,驱动架构的可移植性…...

CNKI查新(引文格式)导出数据合并剔重程序(Python代码)

起因:批量处理CNKI文献导出记录的重复问题 我在撰写学术论文时遇到了一个常见但令人困扰的技术问题。为了全面掌握研究领域的现状,我在中国知网(CNKI)上进行了系统的文献检索,并需要导出所有相关文献记录进行后续分析。 问题背景 CNKI的系统限制:CNKI平台对文献导出设置…...

别再用namespace凑合了!MCP 2026强制启用Cgroups v2 + PSI反馈控制后,租户资源争抢下降83%(实测数据)

更多请点击: https://intelliparadigm.com 第一章:MCP 2026多租户资源隔离演进背景与核心变革 随着云原生基础设施规模化部署,传统基于命名空间(Namespace)和 RBAC 的粗粒度租户隔离机制在混合关键业务场景中暴露出显…...

Python + PyAutoGUI 实现一键清理:从 OpenCV 图像识别到“按键精灵“的自动化之路

前言上篇文章说到我装了 148 个 Skills 到 CC Switch 里,想清理却发现根本没有批量删除功能。没办法,只能自己动手写脚本。这篇文章记录了我的自动化方案演进过程——从一开始想用 OpenCV 搞图像识别,到最后发现一个简单的 PyAutoGUI 脚本就能…...

【毕设】基于Spring Boot的社区团购系统的设计与实现

💟博主:程序员俊星:CSDN作者、博客专家、全栈领域优质创作者 💟专注于计算机毕业设计,大数据、深度学习、Java、小程序、python、安卓等技术领域 📲文章末尾获取源码数据库 🌈还有大家在毕设选题…...

用一块74LS00芯片,手把手教你搭建5种基础逻辑门电路(附Multisim仿真文件)

用一块74LS00芯片手把手搭建5种基础逻辑门电路 在电子工程和计算机科学的入门阶段,理解逻辑门的工作原理是掌握数字电路设计的基础。74LS00作为最常见的四路2输入与非门芯片,不仅价格低廉、易于获取,更是学习逻辑门搭建的理想起点。本文将带你…...

别再只写Actor Core了!LabVIEW Actor Framework中这7个可重写VI,你用对几个?

别再只写Actor Core了!LabVIEW Actor Framework中这7个可重写VI,你用对几个? 在LabVIEW Actor Framework(AF)的开发实践中,许多工程师习惯性地将注意力集中在Actor Core.vi的编写上,却忽略了其他…...

基于MCP协议的ZPL标签打印引擎:连接AI与工业打印的桥梁

1. 项目概述:一个专为MCP设计的ZPL引擎最近在折腾一些与工业打印、物流标签相关的自动化项目时,我遇到了一个挺有意思的库:cicicalex/zpl-engine-mcp。乍一看这个标题,它融合了几个关键元素:zpl、engine和mcp。对于不熟…...

隐式能量模型与均衡匹配:新一代生成建模技术解析

1. 项目概述"均衡匹配:基于隐式能量模型的生成建模新方法"是一项前沿的机器学习研究,它提出了一种全新的生成模型训练范式。这种方法通过建立隐式能量模型与数据分布之间的均衡关系,实现了更稳定、更高效的生成建模。我在实际研究中…...

volatile与信号

文章目录volatile 关键字与信号场景下的可见性问题编译器优化问题开启高优化后,程序可能无法退出高优化条件下程序不退出的原因volatile关键字编译器优化与寄存器缓存详解volatile 关键字与信号场景下的可见性问题 在讨论完信号捕捉、可重入函数等概念之后&#xf…...

如何快速解密游戏音频:acbDecrypter完整实战指南

如何快速解密游戏音频:acbDecrypter完整实战指南 【免费下载链接】acbDecrypter 项目地址: https://gitcode.com/gh_mirrors/ac/acbDecrypter 想要提取游戏中的背景音乐或角色语音,却被加密的音频文件难住了吗?acbDecrypter正是你需要…...

银河麒麟V10 SP1修改MAC地址踩坑记:为什么你的脚本开机不执行?

银河麒麟V10 SP1修改MAC地址的深度实践:从失效脚本到系统级解决方案 在国产操作系统逐步替代传统Linux发行版的浪潮中,银河麒麟V10 SP1以其出色的安全性和稳定性赢得了众多政企用户的青睐。然而,当一位习惯了Ubuntu操作习惯的运维工程师首次尝…...

终极指南:如何用抖音下载器轻松获取无水印视频和音乐

终极指南:如何用抖音下载器轻松获取无水印视频和音乐 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback suppor…...

从冰激凌到芯片制造:用Fluent融化凝固模型模拟5个意想不到的工业场景

从冰激凌到芯片制造:用Fluent融化凝固模型模拟5个意想不到的工业场景 当工程师们谈论Fluent的融化凝固模型时,脑海中浮现的往往是金属铸造车间里通红的钢水或铝液。但如果你认为这套工具只能解决传统制造业的问题,那就像用超级计算机只做加减…...

从‘虚轴’到‘实轴’:用倍福NC过程映像,在包装产线上实现凸轮同步的完整配置流程

从‘虚轴’到‘实轴’:倍福NC过程映像在包装产线凸轮同步中的实战解析 在高速包装产线上,铝箔药片装盒机的推入、封口、印刷等工序需要在传送带连续运动中完成,这对运动控制的同步精度提出了严苛要求。传统机械凸轮已难以满足柔性化生产需求…...

通过curl命令快速调试Taotoken大模型API接口与排查常见错误

通过curl命令快速调试Taotoken大模型API接口与排查常见错误 1. 准备工作 在开始使用curl命令调试Taotoken大模型API之前,需要确保已经完成以下准备工作。首先登录Taotoken控制台,在「API密钥」页面创建一个新的API Key。建议为调试用途单独创建一个Key…...

6大上海海鲜批发采购痛点解析:2025年直营模式与安全风控实战方案

在深入调研上海海鲜批发市场后发现,众多餐饮企业与中小供应商在采购环节普遍面临货源不稳、品控缺失、配送效率低、采购成本高、售后响应慢、线上线下脱节等六大核心痛点。这些问题直接制约着企业的经营稳定性与出品质量。为解答行业困惑,本文以FAQ架构&…...

华为暑期实习技术面复盘:手撕代码翻车后,我是如何靠八股文和项目讲解“救场”的?

华为技术面试突围战:当代码卡壳时如何用专业力扭转局面 去年夏天,我经历了一场堪称"过山车式"的华为技术面试——在手撕代码环节遭遇滑铁卢后,靠着对计算机基础的扎实理解和项目经验的深度拆解,最终赢得了面试官的认可。…...

别再只用WebRTC了!用LiveKit + Go快速搭建一个低延迟的Web音视频聊天室(附完整前后端代码)

用LiveKit与Go构建下一代Web音视频应用:从信令简化到生产部署 在实时音视频通信领域,WebRTC技术虽然强大,但其复杂的信令服务器和SFU(Selective Forwarding Unit)搭建过程常常让开发者望而却步。LiveKit作为新一代开源…...

B站视频下载终极指南:3步解锁大会员4K高清资源

B站视频下载终极指南:3步解锁大会员4K高清资源 【免费下载链接】bilibili-downloader B站视频下载,支持下载大会员清晰度4K,持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader 你是否遇到过这样的困境&am…...

视觉提示技术在视频理解中的应用与优化

1. 视觉提示技术概述:从静态图像到动态视频的演进视觉提示(Visual Prompting)技术最初源于静态图像处理领域,其核心思想是通过对输入图像进行有目的的视觉修饰,引导模型关注特定区域或特征。这种技术在图像分类、目标检…...

c语言开发者如何通过curl快速调用taotoken聚合大模型api

C语言开发者如何通过curl快速调用Taotoken聚合大模型API 1. 准备工作 在开始调用Taotoken的API之前,您需要准备以下两项内容: 获取API Key:登录Taotoken控制台,在「API密钥」页面创建新的密钥并妥善保存。确定模型ID&#xff1…...

Taotoken 用量看板如何帮助项目精准控制 API 成本

Taotoken 用量看板如何帮助项目精准控制 API 成本 1. 用量看板的核心功能 Taotoken 控制台的用量看板为开发者提供了多维度的 API 调用数据可视化能力。通过聚合不同时间粒度(小时、天、周)的 token 消耗统计,项目负责人可以快速掌握整体支…...

告别迷茫!GNSS数据处理从入门到实战:这10款免费/开源软件我帮你试过了

告别迷茫!GNSS数据处理从入门到实战:这10款免费/开源软件我帮你试过了 第一次打开GNSS数据处理软件列表时,那种扑面而来的窒息感我至今记忆犹新——满屏陌生的缩写、复杂的参数配置界面、晦涩的文档说明,就像面对一堵密不透风的技…...

通过Hermes Agent框架接入Taotoken实现自定义工作流的详细步骤指南

通过Hermes Agent框架接入Taotoken实现自定义工作流的详细步骤指南 1. 准备工作 在开始配置之前,请确保已安装Hermes Agent框架并完成基础环境搭建。您需要从Taotoken控制台获取两项关键信息:有效的API Key和所需调用的模型ID。登录Taotoken控制台后&a…...

mysql开发环境权限如何与生产隔离_MySQL多环境权限配置策略

...