8 个版本 (稳定)
| 1.2.2 | 2023 年 11 月 29 日 |
|---|---|
| 1.2.1 | 2023 年 11 月 8 日 |
| 1.1.0 | 2023 年 4 月 14 日 |
| 1.0.1 | 2023 年 3 月 10 日 |
| 0.1.0 | 2022 年 12 月 3 日 |
#4 in #css-selectors
36 每月下载量
25KB
397 行
hq
jq,但用于 HTML。 在此浏览器中尝试

hq 读取 HTML 并根据一系列 CSS 选择器将其转换为 JSON 对象。选择器以类似于 JSON 的方式表达,但值是 CSS 选择器。例如
{posts: .athing | [ {title: .titleline > a, url: .titleline > a | @(href)} ] }
这将选择所有 .athing 元素,并为每个选定的元素创建一个对象数组 (| [{...}])。然后对于每个元素,它将选择 titleline > a 元素的文本以及 href 属性 (| @(href))。
最终结果是以下结构
{
"posts": [
{
"title": "...",
"url": "..."
}
]
}
安装
brew install hq,或 cargo install html-query
特殊查询语法
文本
.foo| @text
这将选择与 .foo 匹配的第一个元素的文本内容。
选择属性
.foo| @(href)
这将选择与 .foo 匹配的第一个元素的 href 属性。
父元素
.foo| @parent
这将返回与 .foo 匹配的第一个元素的父元素。
兄弟元素
.foo| @sibling(1)
这将返回与 .foo 匹配的第一个元素的兄弟元素。
示例
完整黑客新闻故事提取
{posts: .athing | [{href: .titleline > a | @(href), title: .titleline > a, meta: @sibling(1) | {user: .hnuser, posted: .age | @(title) }}]}
这选择每个 .athing 元素,从 href 属性中提取 URL 以及标题。然后选择 兄弟 .athing 元素,并从该元素中提取用户和发帖时间
{
"posts": [
{
"title": "...",
"url": "...",
"meta": {
"posted": "...",
"user": "..."
}
}
]
}
依赖项
~8–13MB
~169K SLoC