一个用于查询、操作和创建 HTML 元素的 SQLite 扩展。
- 使用 CSS 选择器从 HTML 中提取 HTML 或文本,例如
.querySelector()
、.innerHTML
和.innerText
- 从 CSS 选择器生成匹配元素的表格,例如
.querySelectorAll()
- 在查询中安全地创建 HTML 元素,例如
.createElement()
和.appendChild()
sqlite-html
的 API 建模自官方的 JSON1 SQLite 扩展。
这个扩展是用 Go 编写的,感谢 riyaz-ali/sqlite。虽然这个库旨在快速高效,但总体上比纯 C SQLite 扩展要慢,但在实践中你可能不会注意到太大的区别。
.load ./html0
select html_extract(' Anakin Skywalker
', 'b');
-- "Skywalker"
sqlite-html
类似于其他 HTML 抓取工具,例如 BeautifulSoup (Python)、cheerio (Node.js) 或 nokogiri (Ruby)。你可以使用 CSS 选择器从 HTML 源中提取单个元素或元素组来查询数据。
例如,在这里我们查找 index.html
文件中的所有 href
链接。
select
text as name,
html_attribute_get(anchors, 'a', 'href') as href
from html_each(readfile('index.html'), 'a') as anchors
我们还可以使用 html_element
安全地生成 HTML,它建模自 React 的 React.createElement
。

select html_element('p', null,
'Luke, I am your',
html_element('b', null, 'father'),
'!',
html_element('img', json_object(
'src', 'https://images.dog.ceo/breeds/groenendael/n02105056_4600.jpg',
'width', 200
))
);
-- "Luke, I am yourfather!
"
完整的 API 参考请参阅 docs.md
。
语言 | 安装 | |
---|---|---|
Python | pip install sqlite-html |
|
Datasette | datasette install datasette-sqlite-html |
|
Node.js | npm install sqlite-html |
|
Deno | deno.land/x/sqlite_html |
|
Ruby | gem install sqlite-html |
|
Github Release |
在发布页面包含适用于 Linux amd64、MacOS amd64 (不支持 arm) 和 Windows 的预构建二进制文件。
如果你想将 sqlite-html
用作运行时可加载扩展 (Runtime-loadable extension),请从发布版本下载 html0.dylib
(适用于 MacOS)、html0.so
(Linux) 或 html0.dll
(Windows) 文件,并将其加载到你的 SQLite 环境中。
注意:文件名中的
0
(html0.dylib
/html0.so
/html0.dll
) 表示sqlite-html
的主版本。目前sqlite-html
处于 v1 之前,因此未来版本可能会有重大更改。
例如,如果你正在使用 SQLite CLI,你可以这样加载库
.load ./html0
select html_version();
-- v0.0.1
或者在 Python 中,使用内置的 sqlite3 模块
import sqlite3
con = sqlite3.connect(":memory:")
con.enable_load_extension(True)
con.load_extension("./html0")
print(con.execute("select html_version()").fetchone())
# ('v0.0.1',)
或者在 Node.js 中,使用 better-sqlite3
const Database = require("better-sqlite3");
const db = new Database(":memory:");
db.loadExtension("./html0");
console.log(db.prepare("select html_version()").get());
// { 'html_version()': 'v0.0.1' }
或者使用 Datasette
datasette data.db --load-extension ./html0
- sqlite-http,用于在 SQLite 中进行 HTTP 请求(与此工具搭配使用效果极佳)
- htmlq,一个类似但基于 CLI 的使用 CSS 选择器的 HTML 查询工具
- riyaz-ali/sqlite,这个库所依赖的出色的 Go 库
- nalgeon/sqlean,几个用 C 编写的预编译实用 SQLite 函数