jq 选择器:轻松提取 HTML 元素中的文本和属性139
简介
jq 是一个命令行 JSON 解析器,它提供了一组强大的选择器,可以轻松地从 JSON 文档中提取特定数据。本文将重点介绍 jq 的 a 标签选择器,它允许用户从 HTML 文档中提取锚点 (<a>) 元素中的内容。
语法
jq a 标签选择器采用以下语法:jq 'a'
此选择器将匹配文档中的所有 a 标签。
提取内容
要从 a 标签提取文本内容,可以使用 text 函数。例如:jq 'a | text'
此命令将输出所有 a 标签中显示的文本。
示例
考虑以下 HTML 代码:<a href="">示例链接</a>
<a href="">另一个链接</a>
要提取这两个链接的文本内容,我们可以使用以下 jq 命令:html | jq 'a | text'
这将输出:示例链接
另一个链接
提取属性
除了提取文本内容外,jq 还允许您提取 a 标签的属性。为此,可以使用 attr 函数。例如:jq 'a | attr("href")'
此命令将输出所有 a 标签的 href 属性值。
示例
对于前面的 HTML 代码,要提取两个链接的 href 属性,我们可以使用以下命令:html | jq 'a | attr("href")'
这将输出:
其他选择器修饰符
jq 提供了各种选择器修饰符,用于进一步限制匹配。例如:* .class:匹配具有指定类名的 a 标签。
* :contains(text):匹配包含指定文本内容的 a 标签。
* :eq(index):匹配具有指定索引的 a 标签。
示例
对于下面的 HTML 代码:<a class="link-1" href="">示例链接</a>
<a class="link-2" href="">另一个链接</a>
要提取具有 link-1 类的 a 标签的文本内容,我们可以使用以下命令:html | jq '-1 | text'
这将输出:示例链接
高级用法
除了基本用法外,jq 还允许您执行更高级的提取。例如:* 嵌套选择器:使用嵌套选择器可以从 HTML 文档中深度提取数据。例如,要获取所有 a 标签中的所有图像 (<img>) 元素的 src 属性,可以使用以下命令:
html | jq 'a | .img | attr("src")'
* 管道操作:jq 可以与其他命令行工具配合使用。例如,要将提取的链接列表保存到文件中,可以使用以下命令:
html | jq 'a | .href' | sort | uniq >
* 正则表达式:jq 支持正则表达式,允许您根据模式匹配提取数据。例如,要获取所有以 .com 结尾的链接的 href 属性,可以使用以下命令:
html | jq 'a | select(.href | test(".+\\.com$")) | .href'
jq 的 a 标签选择器是一个强大的工具,可以轻松地从 HTML 文档中提取文本内容和属性。通过利用选择器修饰符、嵌套选择器、管道操作和正则表达式,您可以执行高级提取任务,从而从 HTML 文档中获取有价值的数据。
2024-11-11

