
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),仅供参考