Hickory选择器完全攻略:掌握CSS风格DOM节点查询技巧

发布时间:2026/11/16 7:50:37

Hickory选择器完全攻略:掌握CSS风格DOM节点查询技巧 Hickory选择器完全攻略掌握CSS风格DOM节点查询技巧【免费下载链接】hickoryHTML as data项目地址: https://gitcode.com/gh_mirrors/hic/hickoryHickory是一个强大的HTML解析与处理库它提供了类似CSS选择器的API让开发者能够以声明式方式查询和操作HTML文档。本文将详细介绍Hickory选择器的核心功能、使用方法和最佳实践帮助你轻松掌握这一高效的DOM节点查询工具。快速入门Hickory选择器基础Hickory选择器模块位于src/cljc/hickory/select.cljc它实现了大部分CSS选择器功能并提供了Clojure风格的API。使用Hickory选择器通常分为三个步骤解析HTML使用hickory/parse将HTML字符串转换为Hickory数据结构创建选择器使用选择器函数如tag、id、class等组合成查询条件执行查询使用select/select函数应用选择器并获取结果以下是一个简单示例演示如何选择所有div元素(require [hickory.core :as hickory] [hickory.select :as select]) (let [html divfoo/divdivbar/div htree (hickory/as-hickory (hickory/parse html))] (select/select (select/tag :div) htree))核心选择器详解元素选择器精准定位标签tag选择器用于匹配指定标签名的元素支持字符串或关键字参数且不区分大小写;; 匹配所有p标签 (select/tag :p) (select/tag P) ; 同样有效在测试文件test/cljc/hickory/test/select.cljc中我们可以看到tag选择器的实际应用;; 选择所有h1标签 (let [selection (select/select (select/tag h1) htree)] (is (and ( 1 (count selection)) ( :h1 (- selection first :tag)))))ID选择器唯一元素定位id选择器通过元素的id属性进行精确匹配同样不区分大小写;; 匹配id为user-profile的元素 (select/id user-profile) (select/id :user-profile) ; 关键字形式也支持类选择器样式类匹配class选择器用于匹配具有指定CSS类的元素;; 匹配所有包含active类的元素 (select/class active)Hickory会自动解析class属性中的多个类名因此以下HTML元素可以被(select/class cool)匹配div classaclass bclass cool.../div属性选择器灵活的属性匹配attr选择器提供了强大的属性匹配能力支持存在性检查和值匹配;; 匹配所有具有disabled属性的元素 (select/attr :disabled) ;; 匹配href属性值为https://example.com的元素 (select/attr :href #( % https://example.com)) ;; 匹配data-role属性值以button-开头的元素 (select/attr :data-role #(string/starts-with? % button-))组合选择器构建复杂查询后代选择器层级关系匹配descendant选择器用于匹配某个元素的后代元素无论中间隔多少层级;; 匹配div内所有的span元素 (select/descendant (select/tag :div) (select/tag :span))与CSS中的div span选择器等效它会匹配以下结构中的所有spandiv span直接子元素/span pspan间接子元素/span/p /div子选择器直接层级匹配child选择器仅匹配直接子元素与CSS中的运算符类似;; 仅匹配div的直接子元素中的span (select/child (select/tag :div) (select/tag :span))这个选择器不会匹配上例中p内的span元素。相邻兄弟选择器紧接其后的元素follow-adjacent选择器匹配紧随目标元素之后的兄弟元素;; 匹配div后面紧接的p元素 (select/follow-adjacent (select/tag :div) (select/tag :p))等效于CSS中的div p选择器。通用兄弟选择器后续所有兄弟follow选择器匹配目标元素之后的所有兄弟元素无论是否紧接;; 匹配div之后的所有p兄弟元素 (select/follow (select/tag :div) (select/tag :p))等效于CSS中的div ~ p选择器。伪类选择器高级匹配逻辑位置伪类nth-child系列Hickory提供了丰富的位置伪类选择器用于按位置选择元素;; 选择第2个子元素 (select/nth-child 2) ;; 选择奇数位置的子元素 (select/nth-child :odd) ;; 选择偶数位置的子元素 (select/nth-child :even) ;; 选择倒数第3个子元素 (select/nth-last-child 3)在测试文件中我们可以看到这些选择器的实际应用;; 选择偶数位置的元素 (let [selection (select/select (select/and (select/node-type :element) (select/nth-child :even)) htree)] (is (and ( 4 (count selection)) ( :element (- selection first :type)))))逻辑组合and、or、notHickory提供了逻辑组合选择器用于构建复杂条件;; 匹配class为active且id为menu的div元素 (select/and (select/tag :div) (select/class active) (select/id menu)) ;; 匹配div或span元素 (select/or (select/tag :div) (select/tag :span)) ;; 匹配不是p元素的所有元素 (select/not (select/tag :p))实战技巧组合使用选择器复杂查询示例结合多种选择器可以构建强大的查询逻辑。例如选择所有包含item类且data-status属性为completed的div元素这些元素是ul的直接子元素(select/child (select/tag :ul) (select/and (select/tag :div) (select/class item) (select/attr :data-status #( % completed))))性能优化建议从具体到抽象优先使用id、tag等高效选择器再添加类和属性条件限制范围使用child而非descendant减少匹配范围组合条件使用and尽早排除不匹配元素总结Hickory选择器的优势Hickory选择器为Clojure开发者提供了强大而灵活的HTML查询能力其主要优势包括CSS兼容性支持大部分CSS选择器语法降低学习成本函数式API符合Clojure风格支持组合和高阶函数跨平台在Clojure、ClojureScript中均可使用精确控制提供比CSS更细粒度的控制选项通过本文介绍的选择器功能你可以轻松处理各种HTML文档查询需求。要深入了解更多选择器和高级用法请参考Hickory源代码中的src/cljc/hickory/select.cljc文件和测试用例test/cljc/hickory/test/select.cljc。开始使用Hickory选择器体验函数式HTML处理的强大魅力吧【免费下载链接】hickoryHTML as data项目地址: https://gitcode.com/gh_mirrors/hic/hickory创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/11/16 7:50:34

使用CS Roofline Toolkit测量带宽

使用CS Roofline Toolkit测量带宽 工程下载:使用CS Roofline Toolkit测量带宽-案例工程文件,也可以按照下面的说明使用git clone下载 目录使用CS Roofline Toolkit测量带宽0、Roofline模型理解1、CS Roofline Toolkit下载1.1、设置网络1.2、git clone下…

2026/11/16 7:46:58

石首电工证报名入口学历不高怕报不上名?全国通用证书怎么拿

石首电工证报名入口学历不高怕报不上名?全国通用证书怎么拿 你不是学历高的那类人,但想找个稳定的工作?电工证报名入口你可能还在犹豫,怕自己因为学历不够,连报名资格都达不到?别担心,我来告诉你, 石首电工证报名入口 其实并不难,而且这张…

2026/11/16 7:46:58

郴州高压电工证外省证能转吗?2026河南最新政策全解析

郴州高压电工证外省证能转吗?2026河南最新政策全解析 之前考的证在外省能不能转过来?这个问题,估计不少在外地打工的朋友们都在问,特别是像三门峡的建筑工人,很多人手里拿着的是外地的高压电工证,现在回老家发展,或者换工作,就担心证书不被认可。…

2026/11/16 7:46:58

德宏培训电工证千万别踩坑,学历不高也能拿证涨薪

德宏培训电工证千万别踩坑,学历不高也能拿证涨薪 你是不是也担心自己学历不高,根本就报不上德宏培训电工证?别急,我跟你说,这事儿真不是你想的那样。我认识好几个和你一样的人,初中毕业,干了十几年的电工作,现在拿着电工证,一个月轻松拿上6000多…

2026/11/16 7:46:58

电工证能找到工作么吗?通过率揭秘,别怕交培训费白搭

电工证能找到工作么吗?通过率揭秘,别怕交培训费白搭 怕考不过白交培训费?这是很多准备考电工证的学员最担心的事。尤其是现在市场上培训机构五花八门,价格参差不齐,很多学员担心花了钱,最后还是考不过,白白浪费时间和金钱。但事实是,只要方法得当,通…

2026/11/16 7:41:58

电工证证书一手货源,学历不高怕报不上名?良心建议来了

电工证证书一手货源,学历不高怕报不上名?良心建议来了 你是不是总觉得自己学历不高,连个电工证都报不上?别急,今天我就从一个干了十年的应急管理从业者角度,给你讲讲电工证证书一手货源的真相,还有怎么避坑、怎么拿证、怎么赚钱的良心建议。…

2026/11/16 7:29:52

电工证考试口诉怎么准备值不值得考

电工证考试口诉怎么准备值不值得考 实操考试心里没底怕挂科,这是大多数准备考电工证的人心里最真实的感受。尤其是面对【电工证考试口诉】环节,很多人不知道该怎么准备,甚至担心自己说不好就被淘汰。其实,只要掌握方法, 值不值得考…

2026/11/16 5:30:20

桑植县考电工证千万别踩坑!报名全流程教你避坑

桑植县考电工证千万别踩坑!报名全流程教你避坑 你是不是也遇到过这种情况:想考个电工证,但不知道从哪儿下手,怕被中介坑,怕花冤枉钱,更怕考了证还不能用?别急,这正是你该看这篇文章的原因。在桑植县考电工证,确实有很多人被坑过,但只要你知道流程、…

2026/11/16 0:00:11

黎城电工证查询报名费多少钱 内部消息告诉你怎么避开中介陷阱

黎城电工证查询报名费多少钱 内部消息告诉你怎么避开中介陷阱 你是不是也和我一样,想考电工证,但不知道去哪报名,怕被中介坑?最近网上有不少人问“黎城电工证查询报名费多少钱”,结果一查,信息五花八门,真假难辨。别担心,今天我就从一线从业者的角度…

2026/11/16 0:00:11

青岛崂山区电工证培训通过率揭秘:外省证书怎么转过来?

青岛崂山区电工证培训通过率揭秘:外省证书怎么转过来? 之前考的证在外省能不能转过来?这个问题困扰着很多在外地打工的电工,尤其是像南阳卧龙区的建筑工人,他们常年在工地作业,手上持有电工证是基本要求,但很多人因为工作流动性大,担心证书不能转到本…

2026/11/15 4:46:37

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/16 3:17:47

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑