TL;DR
- 将网站转换为 Markdown 是一个提取管道,而不是标签剥离操作:识别规范页面,获取正确的表示,隔离主要内容,转换结构,并验证输出。
- 从有限的 URL 列表或网站地图开始,遵守访问规则,避免将导航、cookie 横幅和推荐视为文章文本。
- 保留标题、链接、代码块、表格、规范 URL 和观察时间;这些对检索系统来说通常比装饰性 HTML 更有价值。
- 一个小的 Python 管道可以使用
httpx、Beautiful Soup 和markdownify处理静态页面。仅在目标内容缺失于初始响应时呈现 JavaScript。 - 在对整站进行索引之前,先在取样页面上测量内容的保真度;干净的 Markdown 仍然可能省略重要事实或包含错误页面。
将网站抓取为 Markdown 是什么意思?
将网站抓取为 Markdown 意味着收集授权页面并将其有意义的内容转换为保留文档结构的文本格式。结果应仍然显示标题层次、段落、链接、列表、代码和表格。一个充满扁平文本的文件更容易生成,但更难引用、分块或审阅。
这项工作有两个独立的部分。发现决定哪些 URL 属于范围内。提取决定每个获取页面的实际内容哪个部分。转换库可以处理 HTML 到 Markdown 的语法,但它无法知道新闻通讯弹出窗口是文章的一部分,还是产品变体是否正确选定。 网站 URL 发现指南 解决了第一个问题;本教程集中于第二个。
对于大型或 JavaScript 重的站点,Nstdata Crawl 是评估代表性公共页面的获取选项。无论您使用托管服务还是本地 Python,输出仍然需要范围控制、来源和人工审核。
步骤 1:定义源和输出合同
从您允许处理的 URL 显式列表开始。网站地图是一个方便的起点,但按主机名和路径前缀进行过滤。排除登录、购物车、搜索和重复的参数化 URL,除非它们是任务的一部分。Google 的 网站地图概述 描述网站地图作为发现提示,而不是保证列出页面是有效或完整的。
在编码之前定义所需的 Markdown 记录。一个有用的最小值是 source_url、final_url、title、fetched_at、content_hash 和 markdown。如果一个页面可能因地区、帐户或产品选项而有所不同,也要捕捉该上下文。请勿仅从原始 URL 创建文件名;长路径、查询字符串和冲突使其不可靠。使用稳定的短语加上一个哈希或数据库键。
设定质量目标:例如,Markdown 必须保留每个 H2、主要代码示例和外部引用,同时排除菜单和页脚导航。该目标可在样本上检查。如果大多数字符是样板,字符计数较高并不是质量指标。
步骤 2:以有限请求获取页面
以下示例使用 Python 3、httpx、Beautiful Soup 和 markdownify。使用 安装它们。代码请求一个公共 URL,设置超时,检查内容类型,并在可用时转换页面的 元素。回退到 或 是故意采取保守态度,仅作为演示;在大规模运行之前,检查目标站点的布局。





