欢迎光临
我们一直在努力

用 Datasette 把 SerpBase 快照变成可查询的网站(附配置)

同事只想筛一下,不想装 Python

采集库在自己机器上,运营想看「上周三某个词的前十条」,最直接的办法是发一个 CSV。发几次就烦了:每次都要导出、发文件、对方还要自己筛选。

Datasette 解决的就是这件事:一条命令把 SQLite 数据库变成可浏览、可筛选、可导出 JSON/CSV 的网站,对方打开浏览器就能查。

一条命令

pip install datasette sqlite-utils

datasette snapshots.db -o –cors

-o 自动开浏览器,–cors 允许前端跨域读取。默认会为每张表生成列表页、单行页和 JSON 接口,不用写后端。

表结构决定体验

Datasette 直接读 SQLite 表,字段设计得好,页面就好用:

CREATE TABLE results (
id INTEGER PRIMARY KEY,
keyword TEXT NOT NULL,
day TEXT NOT NULL,
domain TEXT,
rank INTEGER,
title TEXT,
snippet TEXT,
has_ai INTEGER,
has_paa INTEGER
);

keyword、day、domain 放独立列,Datasette 的分面(facet)才有东西可切;如果把所有信息塞进一个 JSON 字段,页面只能看不能筛。

开启搜索

列表页顶部有搜索框,但默认只能搜单列。要全文搜索标题和摘要,用 sqlite-utils 建 FTS:

sqlite-utils enable-fts snapshots.db results title snippet

之后再进表页,搜索框就能对这两列做全文检索。底层是 SQLite FTS5,索引跟着表自动更新。

分面:让筛选器自动出现

Datasette 的招牌功能是分面:表页侧边自动列出某个字段的取值分布,点一下就筛选。用 metadata 指定:

{
"databases": {
"snapshots": {
"tables": {
"results": {
"facets": ["keyword", "day", "domain"]
}
}
}
}
}

datasette snapshots.db -m metadata.json

三个分面加一个搜索框,运营就能自己完成「某天 + 某词 + 某域名」的组合查询,不用再来找你。

权限:别把库直接公开

Datasette 默认公开可读。内部数据要加一层:

  • 用 datasette-auth-passwords 或反向代理做登录
  • 只读账户、只暴露需要的表
  • 定期归档的库单独部署,不混生产

公开演示可以部署到 Cloud Run 之类的托管环境;内部使用,起在自家内网更省心。

我做错的一版

第一版我把整份 JSON 响应原样存成一列,Datasette 页面能看不能筛,运营点开一条还是满屏大括号。

后来把 keyword、day、domain、rank 拆成独立列,原始 JSON 单独放一列备查。分面和搜索立刻可用,同一个库,体验完全不同。

给别人用的数据,字段要按「怎么筛」来设计,不是按「怎么存」来设计。

现在这个库每周更新一次,运营自己查,我只维护采集和字段。一次网页搜索 1 credit,新账号 500 免费 credits,攒够一个月的样本就够搭起来。

SerpBase 的字段结构见 SerpBase 文档。

赞(0)
未经允许不得转载:171主机测评 » 用 Datasette 把 SerpBase 快照变成可查询的网站(附配置)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址