把ZIM镜像变成Hugging Face数据集kage parquet无损往返导出Parquet实战【免费下载链接】kageShadow any website for offline viewing, with the JavaScript stripped out项目地址: https://gitcode.com/gh_mirrors/kage6/kagekage 是一款开源的网站离线镜像工具它用真实无头浏览器渲染网页、剥离全部 JavaScript再把整站打包成单文件 ZIM 归档。本文带你实战kage parquet子命令——只需两条命令就能把 ZIM 镜像无损导出成 Parquet 列式数据表这正是 Hugging Face 数据集期望的形状再用一条命令反向导入还能把 Parquet 完整还原回 ZIM实现字节级的无损往返。为什么要把 ZIM 镜像变成 Parquet 数据集ZIM 是单文件归档适合分享和阅读但如果你想用 SQL 查询镜像内容、把爬取结果作为网页语料数据集发布、或与其他爬虫数据集合并训练列式格式会更顺手形状标准Parquet 表是一行一个条目的扁平结构url、title、text等列名与 open-index/open-markdown 等主流网页数据集对齐导出文件可直接放进 Hugging Face 数据集仓库查询友好DuckDB、pandas 可以原样读取离线即可全文检索无损往返这不是一次性的单向导出。Parquet 表里保留了原始字节和 ZIM 结构信息ZIM → Parquet → ZIM 的往返能复现每一个条目、其元数据和主页面。准备工作先做一个 ZIM 镜像如果你还没有现成的 ZIM 文件三步即可得到安装 kage 可参考 README.mdkage clone paulgraham.com # 克隆整站到 $HOME/data/kage/paulgraham.com kage pack paulgraham.com # 打包成单个 ZIM 归档 - paulgraham.com.zim打包是确定性的同一个镜像两次打包产出字节完全相同的文件可以放心做校验和缓存。一键导出kage parquet export核心命令只有一行kage parquet export paulgraham.com.zim -o paulgraham.parquet省略-o时默认输出同名的.parquet文件。运行后终端会打印导出统计exported paulgraham.parquet rows 142 redirects 1 content 4.2 MiB size 3.8 MiBParquet 文件本身也用 zstd 压缩体积通常比 ZIM 更小巧。表里到底有哪些列导出实现位于 dataset/dataset.go每行一个归档条目列分为两组列说明doc_id页面 URL 派生的确定性 UUID v5同一页面每次导出都是同一个 idurl/host条目路径与镜像的站点主机名title/mime页面标题与 MIME 类型crawl_date抓取日期来自 ZIM 元数据text/text_lengthHTML 页面的可见文本自动剔除 script/stylenamespace单字母 ZIM 命名空间C 页面资产、M 元数据、W 主页面指针is_redirect/redirect_target重定向条目及其目标例如C/index.htmlcontent条目原始字节——正是这一列让导出可无损还原其中text列的文本抽取逻辑见 dataset/dataset.go它会把script、style、noscript之外的文本拼成一段干净纯文本非常适合直接做全文检索。无损验证kage parquet import 还原 ZIM真正的亮点是反向操作kage parquet import paulgraham.parquet -o paulgraham2.zim kage open paulgraham2.zim # 用还原出的 ZIM 离线浏览导入端会重新写入每个条目的原始字节、元数据并从W/mainPage重定向行恢复主页指针见 cli/parquet.go。项目内置的往返测试 dataset/dataset_test.go 校验了行数与重定向数一致、页面 HTML 逐字节相同、图片字节不变、元数据 Title 保留、主页面仍正确解析。这意味着 Parquet 表双重身份既是可查询的数据集也是一份可逆的归档副本。导出后的两个高频用法1. 离线全文检索镜像内容。ZIM 本身不带 Xapian 全文索引而 Parquet 表可以交给 DuckDB 直接查duckdb -c SELECT url FROM paulgraham.parquet WHERE text ILIKE %schlep blindness%完整思路见官方指南 docs/content/guides/packing-a-mirror.md。2. 作为 Hugging Face 数据集发布。把.parquet文件放进数据集仓库即可——列名与主流网页爬取数据集对齐doc_id稳定可去重下游用 datasets 库或 pandas 加载零改造。小结步骤命令产物克隆 打包kage clonekage pack单文件 ZIM导出kage parquet export a.zimHugging Face 数据集形状的 Parquet还原kage parquet import a.parquet逐字节还原的 ZIM一条导出、一条导入ZIM 镜像与 Parquet 数据集之间自由往返且无损——这正是 kage 把离线归档和数据工程接在一起的巧思。【免费下载链接】kageShadow any website for offline viewing, with the JavaScript stripped out项目地址: https://gitcode.com/gh_mirrors/kage6/kage创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
