采集的产物应是一条可追溯记录,而不是只有一段正文。把 URL、标题、抓取时间和正文哈希与正文一起保存,后续才能判断资料是否更新、引用能否回链。
安装并采集一个获准页面
pip install trafilatura
import hashlib, json
from datetime import datetime, timezone
import trafilatura
url = "https://example.com/help/refund"
downloaded = trafilatura.fetch_url(url)
if downloaded is None:
raise RuntimeError("download failed")
result = trafilatura.bare_extraction(
downloaded, url=url, with_metadata=True,
include_links=True, output_format="python"
)
if not result or not result.get("text"):
raise RuntimeError("main text missing")
record = dict(result)
record["source_url"] = url
record["fetched_at"] = datetime.now(timezone.utc).isoformat()
record["content_sha256"] = hashlib.sha256(
record["text"].encode("utf-8")
).hexdigest()
open("page.json", "w", encoding="utf-8").write(
json.dumps(record, ensure_ascii=False, indent=2)
)
Trafilatura Python 用法说明了下载与提取流程;核心函数文档列出 bare_extraction、元数据和输出选项。参数会随版本变化,运行前以安装版本文档为准。

别丢掉失败记录
对下载失败、正文为空、登录页、脚本渲染页分别记录状态码或错误类型。失败页面不能写成空字符串后继续入库,否则检索时只看到“文档存在”却永远找不到内容。
人工验收
先只选一个你有权使用的公开测试页。打开生成的 JSON,人工对照网页检查标题、列表、关键段落和链接;再修改网页样本或重复抓取,确认哈希是否按预期变化。导航、Cookie 横幅和推荐阅读若混入正文,应调整规则或换用结构化数据源。
进入知识库前
给记录分配稳定 document_id,保留原始 HTML 或原始文件,正文清洗结果另存。按来源更新时间决定是否重新切片;同一 URL 内容变化时创建新版本,不直接覆盖审计记录。
限制
示例未对任何第三方站点批量运行,也不授权绕过登录、付费墙、robots 规则或网站条款。网页使用许可、个人信息和版权应在采集前由资料负责人确认。
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/32269.html