首页/新闻资讯/正文详情

html4cj DOM操作实战手册:1分钟获取节点的文本、属性与标签内容

发布时间:2026/9/25 10:48:36 来源:云帆数科 栏目:资讯中心
html4cj DOM操作实战手册:1分钟获取节点的文本、属性与标签内容
html4cj DOM操作实战手册1分钟获取节点的文本、属性与标签内容【免费下载链接】html4cj一个HTML格式解析库项目地址: https://gitcode.com/Cangjie-TPC/html4cjhtml4cj 是一个简洁好用的 HTML 解析库它能把 HTML 字符串解析成 DOM 树让你在代码中像操作对象一样取出节点的文本、属性和标签内容特别适合网页数据处理和爬虫场景。本文带你用最短时间掌握 html4cj 的 DOM 操作核心 API。上图展示了 html4cj 的解析器工作流程HTML 文本经过字符读取、构建 Token、构建 DOM 树最终生成可供操作的 Document 对象。 3步快速上手解析出你的第一个DOM对象使用 html4cj 只需三步导入库 → 调用 parse → 操作节点。import html4cj.* main(): Int64 { // 第2步把HTML解析成DocumentDOM对象 var doc: Document Html4cj.parse(a href/fooHello/a, http://127.0.0.1/) // 第3步用CSS选择器定位节点 var a: Element doc.select(a).first().getOrThrow() println(a.text()) // Hello println(a.attr(href)) // /foo return 0 }核心入口是Html4cj.parse静态方法定义在 html4cj.cj方法用途parse(html, baseUri)解析完整 HTMLbaseUri 用于解析相对链接parse(html)最简单的解析方式无基准地址parseBodyFragment(bodyHtml)解析 body 片段适合局部 HTML小贴士解析网页时务必传入baseUri页面真实 URL这样href/foo这类相对路径才能正确还原成绝对地址。 1分钟获取节点文本text()方法全解获取节点文本是 DOM 操作最高频的动作html4cj 提供了几个层次分明的方法let p: Element doc.select(p).first().getOrThrow() p.text() // 元素及其所有子元素的组合文本已规范化空白 p.ownText() // 仅该元素自身的文本不含子元素 p.wholeText() // 保留原始空白和换行符的文本 p.hasText() // 判断是否有非空白文本返回Booltext()定义在 element.cj最常用返回解码后的干净文本批量场景用eachText()一次拿到所有匹配元素的文本列表定义在 elements.cjlet items: ArrayListString doc.select(li).eachText() // 逐个获取多个列表项的文本一个方法搞定⚠️ 注意text()返回的是纯文本会剥掉所有标签如果子元素为空返回空字符串而非 None。 精准获取节点属性attr()与hasAttr()两大招式属性获取的 API 集中在 Node 基类上所有节点类型通用a.attr(href) // 获取属性值不存在时返回空字符串 a.hasAttr(href) // 先判断属性是否存在避免空值歧义 a.id() // 快捷方法获取id属性 a.className() // 快捷方法获取class属性文本 a.hasClass(logo) // 判断是否有某个classattr读取实现见 node.cj判断属性存在用 node.cj 的hasAttr类名相关快捷方法在 element.cj 起 进阶一键把相对URL变绝对地址这是 html4cj 最实用的功能之一——在属性键前加abs:前缀自动把相对 URL 转成绝对 URLa.attr(abs:href) // 输出 http://127.0.0.1/foo底层对应absUrl方法定义在 node.cj原理是结合解析时传入的baseUri做地址拼接。爬链接时这个技巧能省去大量手工处理。️ 提取标签内容html()与outerHtml()一文看懂文本和标签内容是两回事前者是纯文字后者保留 HTML 结构。let div: Element doc.select(div).first().getOrThrow() div.html() // 内部HTML不含div自身的开始/结束标签 div.outerHtml() // 外部HTML包含div自身标签的完整片段方法返回内容典型用途text()纯文本展示文字、提取标题html()内部 HTML提取子内容、局部渲染outerHtml()完整标签 HTML复制整个卡片/区块html()在 element.cjouterHtml()批量版本在 elements.cj 记忆口诀text 要文字html 要里子outerHtml 要整体。✅ 避坑指南3个常见坑一次说清坑1属性不存在时拿到空字符串。attr对不存在的属性返回而不是报错建议重要字段先用hasAttr判断见 elements.cj。坑2忘记传 baseUri 导致绝对 URL 失效。abs:href依赖解析时的基准地址若调用parse(html)时没传 baseUriabs:前缀拿到的可能还是相对路径。坑3选择器没匹配到节点。select(a).first()可能返回 None记得用.getOrThrow()或直接判空别裸调方法。 延伸阅读完整API与源码路径想深入某个 API 时直接对照文档和源码效率最高完整接口文档含全部方法签名与示例doc/feature_api.md核心解析入口类 Html4cjhtml4cj.cjElement 元素节点文本、类名、选择器element.cjElements 批量操作eachText、outerHtmlelements.cjNode 节点基类attr、absUrlnode.cj选择器查询实现selector.cj掌握本文的parse→select→text/attr/html这条主线你就能覆盖 90% 的日常 DOM 操作需求剩下的特殊场景再查完整 API 文档即可。【免费下载链接】html4cj一个HTML格式解析库项目地址: https://gitcode.com/Cangjie-TPC/html4cj创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

Hypothesis 多 Bug 发现(Multi-Bug Discovery):一次运行同时报告所有不同故障的机制与原理
Hypothesis 多 Bug 发现(Multi-Bug Discovery):一次运行同时报告所有不同故障的机制与原理

测试开发工具 【免费下载链接】hypothesis The property-based testing library for Python 项目地址: https://gitcode.com/gh_mirrors/hy/hypothesis 点击查看 免费下载 Hypothesis 作为 Python 生态中主流的基于属性的测试(property-based testing&a… · 2026/9/25 10:48:36

PaddleSeg 语义分割模型 C++ 部署实战:FastDeploy 在 CPU/GPU/Paddle-TensorRT 上的全流程指南
PaddleSeg 语义分割模型 C++ 部署实战:FastDeploy 在 CPU/GPU/Paddle-TensorRT 上的全流程指南

人工智能计算机视觉预训练 【免费下载链接】PaddleSeg Easy-to-use image segmentation library with awesome pre-trained model zoo, supporting wide-range of practical tasks in Semantic Segmentation, Interactive Segmentation, Panoptic Segmentation, Image Matting,… · 2026/9/25 10:48:18

解读 Mosquitto 0.3 版本公告:日志、多端口监听、快速重启与 tcp-wrappers 主机访问控制
解读 Mosquitto 0.3 版本公告:日志、多端口监听、快速重启与 tcp-wrappers 主机访问控制

物联网消息队列后端网络/通信 【免费下载链接】mosquitto Eclipse Mosquitto - An open source MQTT broker 项目地址: https://gitcode.com/gh_mirrors/mo/mosquitto 点击查看 免费下载 2009 年 12 月 17 日,Eclipse Mosquitto 发布 0.3 版本&#xff… · 2026/9/25 10:48:12

CPLL模块化仿真:拆解PD/LF/VCO/FD四模块实现确定性设计
CPLL模块化仿真:拆解PD/LF/VCO/FD四模块实现确定性设计

1. 项目概述:CPLL不是黑箱,而是可拆解、可验证、可优化的精密时序系统CPLL——Clock Phase-Locked Loop,即时钟相位锁相环,是高速数字系统里最核心的时序引擎之一。它不单是“一个能输出稳定时钟的模块”,而是由鉴相器… · 2026/9/25 11:15:34

运算跨导放大器OTA设计指南:从原理到实战应用
运算跨导放大器OTA设计指南:从原理到实战应用

1. 运算跨导放大器OTA到底是什么,为什么值得单独拿出来讲很多人第一次看到“运算跨导放大器”这个词,脑子里蹦出来的可能是“运放”。没错,OTA和传统运放(OPA,Operational Amplifier)确实沾亲带故&#xff… · 2026/9/25 11:15:28

Continue JetBrains 插件实践指南:从本地模型到多文件重构的 AI 编程助手完整配置
Continue JetBrains 插件实践指南:从本地模型到多文件重构的 AI 编程助手完整配置

Continue JetBrains 插件实践指南:从本地模型到多文件重构的 AI 编程助手完整配置 【免费下载链接】continue open-source coding agent 项目地址: https://gitcode.com/GitHub_Trending/co/continue Continue 是一款开源的 AI 编程助手,装进 Int… · 2026/9/25 11:15:21

昇腾Atlas 300V 24G部署YOLO全流程:从驱动到推理调优
昇腾Atlas 300V 24G部署YOLO全流程:从驱动到推理调优

算力焦虑这事,搞AI推理的兄弟们应该都懂。手里攥着一个训练好的YOLO模型,想在边缘设备上跑出个实时帧率,结果一看GPU价格直接劝退。这时候把目光转向昇腾的推理卡系列,算是性价比很高的一条路。前阵子我正好在一台服务器上折腾完A… · 2026/9/25 11:15:21

Atlas 300V是什么?YOLO模型部署昇腾平台完整指南
Atlas 300V是什么?YOLO模型部署昇腾平台完整指南

最近在技术群和私信里被问得最多的两个词,一个是“atlas”,另一个是“atlas部署yolo”。还有人直接发来一张购买截图问我:atlas 300v 24g 是运算加速卡吗?说实话我第一反应以为大家问的是某个数据库或者开源项目,直到看… · 2026/9/25 11:15:09

Atlas 300V部署YOLO实战:昇腾推理加速卡从模型转换到性能调优
Atlas 300V部署YOLO实战:昇腾推理加速卡从模型转换到性能调优

最近后台好多人在问同一个问题:atlas部署yolo到底行不行?还有朋友拿着“atlas 300v 24g”的截图问我,这东西是不是一块运算加速卡。我先说结论:它是华为昇腾系列的推理加速卡,不是传统意义上的显卡,也不是用… · 2026/9/25 11:15:09

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

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

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

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

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

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

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码