一个用于查询、操作和创建 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 函数