Crawlee for Python 教程:构建爬虫管道,支持 robots 处理、链接图与 RAG 分块导出
本文详细教程演示如何使用 Crawlee for Python 构建完整的网页爬取管道,包括静态/动态爬虫、结构化数据提取、链接图构建以及 RAG 分块导出,适合需要将网页数据转化为 AI 训练数据的开发者。
一句话看懂
Crawlee for Python 发布完整教程,教你从零搭建爬虫管道,支持 robots.txt 处理、动态渲染、链接图分析,并直接导出 RAG 分块 JSONL。
详细发生了什么
Crawlee 是一个用于 Python 的网页爬取框架,支持静态和动态内容抓取。本教程由 Sana Hassan 撰写,完整演示了从环境配置到 AI 就绪数据输出的全流程。
教程首先在 Colab 中配置 Crawlee 运行时,安装兼容的 Pydantic 和 Playwright 依赖。然后生成一个包含产品页、文档页、博客内容、内部链接、robots.txt 规则、JSON-LD 元数据以及 JavaScript 渲染目录的本地演示网站。
使用三种爬虫进行不同场景的抓取:
- BeautifulSoupCrawler:快速递归 HTML 爬取,提取标题、元数据、文本预览、出站链接、产品属性、文档标题、代码块和博客标签。
- ParselCrawler:基于 CSS 和 XPath 选择器精确提取产品详情页数据。
- PlaywrightCrawler:在无头 Chromium 浏览器中渲染 JavaScript 内容,等待动态 DOM 元素出现,提取客户端数据并捕获全页截图。
抓取完成后,教程展示如何规范化数据、构建链接图(使用 NetworkX 可视化),并导出为 JSON、CSV 以及 RAG 就绪的 JSONL 分块格式。每个分块包含文本内容、元数据(如 URL、标题、类型)和向量嵌入所需的字段。
中文圈视角
对于中文开发者,这个教程有几点值得关注:
-
RAG 数据准备:当前中文 RAG 应用(如知识库问答、文档检索)常面临数据清洗难题。Crawlee 的 JSONL 分块导出功能可以直接对接 LangChain、LlamaIndex 等框架,减少数据预处理工作量。但需注意,教程中的分块策略是简单的固定长度分割,中文场景可能需要调整分词逻辑。
-
国产平替:国内类似工具有 SpiderFlow(可视化爬虫)和 EasySpider,但 Crawlee 的优势在于与 Playwright 深度集成,能处理复杂 JS 渲染页面。对于需要大规模、结构化抓取的场景,Crawlee 是更专业的选择。
-
合规提醒:爬虫必须遵守 robots.txt 和网站使用条款。教程中明确演示了 robots 处理,但中文网站对爬虫的容忍度不同,尤其涉及商业数据时需谨慎。建议结合国内《数据安全法》评估风险。
-
中文内容适配:教程中的演示网站是英文,但 Crawlee 支持 Unicode,抓取中文内容没有问题。不过,中文分词(如 jieba)和编码处理需要额外步骤,教程未涉及,开发者需自行补充。
几条值得记住的细节
- 教程使用 Crawlee 0.5+ 和 Pydantic 2.11,Colab 环境需先安装 Playwright 浏览器。
- 三种爬虫各有侧重:BeautifulSoupCrawler 适合静态页面,ParselCrawler 适合精确提取,PlaywrightCrawler 适合 JS 渲染页面。
- 链接图使用 NetworkX 构建,可可视化页面间关系,帮助理解网站结构。
- RAG 分块导出为 JSONL 格式,每行包含
text、metadata和chunk_id,可直接用于向量数据库。 - 教程代码完整可运行,包含 Colab 自动重启逻辑,适合新手跟随操作。
一句话总结
如果你需要将网页数据转化为 RAG 可用的结构化分块,Crawlee for Python 教程提供了一个从爬取到导出的完整参考实现。