以下表格整理了 jsoup-1.13.1 最常用的核心 API,按功能模块分类,聚焦核心类 / 方法和中文用法说明,覆盖解析、DOM 操作、选择器、属性 / 文本处理等核心场景:

  1. jsoup 核心入口是Jsoup类,主要用于解析 HTML(字符串 / 文件 / 远程 URL),返回Document对象作为操作入口;
  2. 元素查询优先使用select()(CSS 选择器),精准定位用getElementById(),属性 / 文本操作通过Element类的attr()/text()/html()完成;
  3. 遍历元素可通过parent()/children()/siblingElements()实现,表单处理专用val()方法,输出格式化可通过outputSettings()配置。
注:以下为最常用 API,jsoup-1.13.1 的完整 API 可参考官方文档,核心逻辑与上述一致,仅部分边缘方法未列入(如 XML解析、HTTP 请求高级配置等)。
表头表头表头
功能分类核心类 / 方法中文用法说明
文档解析Jsoup.parse(String html)将 HTML 字符串解析为 Document 对象(jsoup 的核心文档对象),自动修复不规范的 HTML 结构
文档解析Jsoup.parse(File in, String charset)从本地文件解析 HTML,指定字符编码(如 UTF-8),返回 Document 对象
文档解析Jsoup.connect(String url).get()发送 HTTP GET 请求获取远程网页,解析为 Document 对象(支持设置请求头、超时等)
文档解析Jsoup.parseBodyFragment(String html)仅解析 HTML 片段(如内的内容),返回 Document 对象,忽略/等根标签
选择器查询Document.select(String cssQuery)按 CSS 选择器语法查询元素,返回 Elements(元素集合),如select("div.content")
选择器查询Element.selectFirst(String cssQuery)按 CSS 选择器查询第一个匹配的元素,返回 Element(避免遍历集合)
元素定位Element.getElementById(String id)根据 id 属性精准定位单个元素,等价于select("#id"),效率更高
元素定位Element.getElementsByTag(String tag)根据标签名获取子元素集合,如getElementsByTag("a")获取所有链接
元素定位Element.getElementsByClass(String className)根据 class 属性获取子元素集合,等价于select(".className")
文本处理Element.text()获取元素内的纯文本内容(剔除所有 HTML 标签),包含所有子元素的文本
文本处理Element.ownText()仅获取当前元素自身的纯文本(不包含子元素的文本)
文本处理Element.text(String text)设置元素的纯文本内容(覆盖原有内容,自动转义特殊字符如 <、>)
HTML 处理Element.html()获取元素内的 HTML 内容(包含子元素的标签)
HTML 处理Element.html(String html)设置元素的 HTML 内容(覆盖原有内容,不转义标签,直接渲染)
HTML 处理Element.outerHtml()获取当前元素及其内部所有内容的完整 HTML(包含自身标签)
属性操作Element.attr(String key)获取元素指定属性的值,如attr("href")获取链接地址
属性操作Element.attr(String key, String value)设置元素指定属性的值,如attr("src", "new.jpg")
属性操作Element.hasAttr(String key)判断元素是否包含指定属性(返回 boolean)
属性操作Element.removeAttr(String key)移除元素的指定属性
元素遍历Element.parent()获取当前元素的父元素
元素遍历Element.children()获取当前元素的所有直接子元素(返回 Elements)
元素遍历Element.siblingElements()获取当前元素的所有同级元素(排除自身)
元素遍历Element.nextElementSibling()获取当前元素的下一个同级元素
元素遍历Element.previousElementSibling()获取当前元素的上一个同级元素
表单处理Element.val()获取表单元素(input/select/textarea)的 value 值
表单处理Element.val(String value)设置表单元素的 value 值
文档信息Document.title()获取 HTML 文档的标签内容</td></tr><tr><td align="left">文档信息</td><td align="center">Document.title(String title)</td><td align="left">设置 HTML 文档的<title>标签内容</td></tr><tr><td align="left">输出格式化</td><td align="center">Document.outputSettings()</td><td align="left">获取输出设置对象,可配置 HTML 缩进、字符编码、是否格式化等</td></tr><tr><td align="left">输出格式化</td><td align="center">Element.toString()</td><td align="left">将元素转换为格式化后的 HTML 字符串</td></tr></tbody></table> </article> <div class="post-copyright"> <div class="post-copyright__author"> <span class="post-copyright-meta"> 作者: </span> <span class="post-copyright-info"> <a itemprop="name" href="https://aiappx.com/index.php/author/1/" rel="author">金学宁</a></span> </div> <div class="post-copyright__type"> <span class="post-copyright-meta">文章链接: </span> <span class="post-copyright-info"><a href="https://aiappx.com/index.php/archives/82/"> https://aiappx.com/index.php/archives/82/</a></span> </div> <div class="post-copyright__notice"> <span class="post-copyright-meta">版权声明: </span> <span class="post-copyright-info"> 本博客所有文章除特别声明外,均采用 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" target="_blank">CC BY-NC-SA 4.0</a> 许可协议。转载请注明来自<a href="https://blog.aiappx.com/">生活中的ning</a> ! </span> </div> </div> <div class="tag_share"> <div class="post-meta__tag-list"> <a class="post-meta__tags"><span>无标签</span></a> </div> <div class="post_share"> <div class="social-share share-component" data-image="https://tva4.sinaimg.cn/large/007X0Rdygy1ghm2u8yvhdj30sg0g0gp1.jpg" data-sites="facebook,twitter,wechat,weibo,qq"> <link rel="stylesheet" href="https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/social-share.js/1.0.16/css/share.min.css" media="all" onload="this.media='all'"> <script src="https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/social-share.js/1.0.16/js/social-share.min.js" defer=""></script> </div> </div> </div> <nav class="pagination-post" id="pagination"> <div class="prev-post pull-left"> <a href="https://aiappx.com/index.php/archives/79/" title="Android 17 Beta2 无障碍策略的适配性分析"> <img class="cover" onerror="this.onerror=null;this.src='https://blog.aiappx.com/usr/themes/butterfly/img/404.jpg'" data-lazy-src="https://blog.aiappx.com/usr/uploads/2026/03/924261910.png" src="data:image/gif;base64,R0lGODdhAQABAPAAAMPDwwAAACwAAAAAAQABAAACAkQBADs=" alt="Android 17 Beta2 无障碍策略的适配性分析"> <div class="pagination-info"> <div class="label">上一篇</div> <div class="next_info">Android 17 Beta2 无障碍策略的适配性分析</div> </div> </a> </div> <div class="next-post pull-right"> <a href="https://aiappx.com/index.php/archives/94/" title="Unicode 上标 (Superscript) & 下标 (Subscript) 完整参考表"> <img class="cover" onerror="this.onerror=null;this.src='https://blog.aiappx.com/usr/themes/butterfly/img/404.jpg'" class="prev-cover" data-lazy-src="https://blog.aiappx.com/usr/uploads/2026/03/714766851.png" src="data:image/gif;base64,R0lGODdhAQABAPAAAMPDwwAAACwAAAAAAQABAAACAkQBADs=" alt="Unicode 上标 (Superscript) & 下标 (Subscript) 完整参考表"> <div class="pagination-info"> <div class="label">下一篇</div> <div class="next_info">Unicode 上标 (Superscript) & 下标 (Subscript) 完整参考表</div> </div> </a> </div> </nav> <div id="comments"> </div> </div> <div class="aside-content" id="aside-content" role="complementary"> <div class="card-widget card-info"> <div class="card-info-avatar is-center"> <div class="avatar-img"> <img data-lazy-src="https://blog.aiappx.com/image/avatar.webp" onerror="this.onerror=null;this.src='/usr/themes/butterfly/img/friend_404.gif'" src="data:image/gif;base64,R0lGODdhAQABAPAAAMPDwwAAACwAAAAAAQABAAACAkQBADs=" alt="avatar"> </div> <div class="author-info__name"> 金学宁 </div> <div class="author-info__description"> ENTJ · 自由职业者 | 多元技能深耕者 </div> </div> <div class="card-info-data"> <div class="card-info-data site-data is-center"> <a href="#null"> <div class="headline">文章</div> <div class="length-num"> 8 </div> </a> <a href="#null"> <div class="headline">标签</div> <div class="length-num">0</div> </a> <a href="#null"> <div class="headline"> 分类 </div> <div class="length-num"> 3 </div> </a> </div> </div> <a class="button--animated" id="card-info-btn" target="_blank" rel="noopener" href="https://aistudio.aiappx.com/"> <i class="fas fa-link"> </i> <span> 个人网站 </span> </a> </div> <div class="card-widget card-announcement"> <div class="item-headline"> <i class="fas fa-bullhorn card-announcement-animation"></i><span>公告</span> </div> <div class="announcement_content">本站正常运行,内容持续更新</div> </div> <div class="sticky_layout"> <div class="card-widget" id="card-toc"> <div class="item-headline"> <i class="fas fa-stream"></i> <span>目录</span> <span class="toc-percentage"></span> </div> <div class="toc-content"> <ol class="toc"> </ol> </div> </div> <!--微博热搜--> <!--微博热搜end--> <div class="card-widget card-recent-post"> <div class="item-headline"> <i class="fas fa-history"></i><span>最新文章</span> </div> <div class="aside-list"> <div class="aside-list-item"> <a class="thumbnail" href="https://aiappx.com/index.php/archives/19/" title="APP如何保活(以澎湃OS3为例)"> <img onerror="this.onerror=null;this.src='https://blog.aiappx.com/usr/themes/butterfly/img/404.jpg'" data-lazy-src="https://blog.aiappx.com/usr/uploads/2026/03/2609510486.png " src="data:image/gif;base64,R0lGODdhAQABAPAAAMPDwwAAACwAAAAAAQABAAACAkQBADs=" alt="APP如何保活(以澎湃OS3为例)"> </a> <div class="content"> <a class="title" href="https://aiappx.com/index.php/archives/19/">APP如何保活(以澎湃OS3为例)</a> <time datetime="2026-03-18" title="发表于 2026-03-18"> 2026-10-21</time> </div> </div> <div class="aside-list-item"> <a class="thumbnail" href="https://aiappx.com/index.php/archives/100/" title="Unicode货币符号大全:完整参考表与输入指南"> <img onerror="this.onerror=null;this.src='https://blog.aiappx.com/usr/themes/butterfly/img/404.jpg'" data-lazy-src="https://blog.aiappx.com/usr/uploads/2026/10/1930347876.png " src="data:image/gif;base64,R0lGODdhAQABAPAAAMPDwwAAACwAAAAAAQABAAACAkQBADs=" alt="Unicode货币符号大全:完整参考表与输入指南"> </a> <div class="content"> <a class="title" href="https://aiappx.com/index.php/archives/100/">Unicode货币符号大全:完整参考表与输入指南</a> <time datetime="2026-03-18" title="发表于 2026-03-18"> 2026-10-21</time> </div> </div> <div class="aside-list-item"> <a class="thumbnail" href="https://aiappx.com/index.php/archives/94/" title="Unicode 上标 (Superscript) & 下标 (Subscript) 完整参考表"> <img onerror="this.onerror=null;this.src='https://blog.aiappx.com/usr/themes/butterfly/img/404.jpg'" data-lazy-src="https://blog.aiappx.com/usr/uploads/2026/03/714766851.png " src="data:image/gif;base64,R0lGODdhAQABAPAAAMPDwwAAACwAAAAAAQABAAACAkQBADs=" alt="Unicode 上标 (Superscript) & 下标 (Subscript) 完整参考表"> </a> <div class="content"> <a class="title" href="https://aiappx.com/index.php/archives/94/">Unicode 上标 (Superscript) & 下标 (Subscript) 完整参考表</a> <time datetime="2026-03-18" title="发表于 2026-03-18"> 2026-03-19</time> </div> </div> <div class="aside-list-item"> <a class="thumbnail" href="https://aiappx.com/index.php/archives/82/" title="jsoup-1.13.1 核心 API 及中文用法说明"> <img onerror="this.onerror=null;this.src='https://blog.aiappx.com/usr/themes/butterfly/img/404.jpg'" data-lazy-src="https://blog.aiappx.com/usr/uploads/2026/03/3541359749.png " src="data:image/gif;base64,R0lGODdhAQABAPAAAMPDwwAAACwAAAAAAQABAAACAkQBADs=" alt="jsoup-1.13.1 核心 API 及中文用法说明"> </a> <div class="content"> <a class="title" href="https://aiappx.com/index.php/archives/82/">jsoup-1.13.1 核心 API 及中文用法说明</a> <time datetime="2026-03-18" title="发表于 2026-03-18"> 2026-03-18</time> </div> </div> <div class="aside-list-item"> <a class="thumbnail" href="https://aiappx.com/index.php/archives/79/" title="Android 17 Beta2 无障碍策略的适配性分析"> <img onerror="this.onerror=null;this.src='https://blog.aiappx.com/usr/themes/butterfly/img/404.jpg'" data-lazy-src="https://blog.aiappx.com/usr/uploads/2026/03/924261910.png " src="data:image/gif;base64,R0lGODdhAQABAPAAAMPDwwAAACwAAAAAAQABAAACAkQBADs=" alt="Android 17 Beta2 无障碍策略的适配性分析"> </a> <div class="content"> <a class="title" href="https://aiappx.com/index.php/archives/79/">Android 17 Beta2 无障碍策略的适配性分析</a> <time datetime="2026-03-18" title="发表于 2026-03-18"> 2026-03-17</time> </div> </div> <div class="aside-list-item"> <a class="thumbnail" href="https://aiappx.com/index.php/archives/47/" title="颜色透明度16进制对照表(懒程序员必备)"> <img onerror="this.onerror=null;this.src='https://blog.aiappx.com/usr/themes/butterfly/img/404.jpg'" data-lazy-src="https://blog.aiappx.com/usr/uploads/2026/03/2543851786.png " src="data:image/gif;base64,R0lGODdhAQABAPAAAMPDwwAAACwAAAAAAQABAAACAkQBADs=" alt="颜色透明度16进制对照表(懒程序员必备)"> </a> <div class="content"> <a class="title" href="https://aiappx.com/index.php/archives/47/">颜色透明度16进制对照表(懒程序员必备)</a> <time datetime="2026-03-18" title="发表于 2026-03-18"> 2026-03-15</time> </div> </div> <div class="aside-list-item"> <a class="thumbnail" href="https://aiappx.com/index.php/archives/3/" title="APP如何保活(以鸿蒙OS为例)"> <img onerror="this.onerror=null;this.src='https://blog.aiappx.com/usr/themes/butterfly/img/404.jpg'" data-lazy-src="https://blog.aiappx.com/usr/uploads/2026/03/2245474374.png " src="data:image/gif;base64,R0lGODdhAQABAPAAAMPDwwAAACwAAAAAAQABAAACAkQBADs=" alt="APP如何保活(以鸿蒙OS为例)"> </a> <div class="content"> <a class="title" href="https://aiappx.com/index.php/archives/3/">APP如何保活(以鸿蒙OS为例)</a> <time datetime="2026-03-18" title="发表于 2026-03-18"> 2022-11-07</time> </div> </div> <div class="aside-list-item"> <a class="thumbnail" href="https://aiappx.com/index.php/archives/40/" title="快捷搜题APP-使用教程"> <img onerror="this.onerror=null;this.src='https://blog.aiappx.com/usr/themes/butterfly/img/404.jpg'" data-lazy-src="https://blog.aiappx.com/usr/uploads/2026/10/1413942124.png " src="data:image/gif;base64,R0lGODdhAQABAPAAAMPDwwAAACwAAAAAAQABAAACAkQBADs=" alt="快捷搜题APP-使用教程"> </a> <div class="content"> <a class="title" href="https://aiappx.com/index.php/archives/40/">快捷搜题APP-使用教程</a> <time datetime="2026-03-18" title="发表于 2026-03-18"> 2021-11-18</time> </div> </div> </div> </div> <div class="card-widget card-webinfo"> <div class="item-headline"> <i class="fas fa-chart-line"></i> <span>网站资讯</span> </div> <div class="webinfo"> <div class="webinfo-item"> <div class="item-name">文章数目 :</div> <div class="item-count"> 8 </div> </div> <div class="webinfo-item"> <div class="item-name">已运行时间 :</div> <div class="item-count" id="runtimeshows" data-publishdate=""> 2526 天 </div> </div> <div class="webinfo-item"> <div class="item-name">本站总字数 :</div> <div class="item-count"> 3.45 W </div> </div> <div class="webinfo-item"> <div class="item-name">本站总访问量 :</div> <div class="item-count"> 9842 </div> </div> <div class="webinfo-item"> <div class="item-name">最后更新时间 :</div> <div class="item-count"> 13 小时前 </div> </div> </div> </div> </div> </div><!-- end #sidebar --> <link rel="stylesheet" href="https://blog.aiappx.com/usr/themes/butterfly/css/GrayMac.css"> <script type="text/javascript" src="https://blog.aiappx.com/usr/themes/butterfly/js/prism.js?v1.5.3"></script> <script type="text/javascript" src="https://blog.aiappx.com/usr/themes/butterfly/js/clipboard.min.js"></script> <script type="text/javascript"> (function() { var pres = document.querySelectorAll('pre'); var lineNumberClassName = 'line-numbers'; pres.forEach(function(item, index) { item.className = item.className == '' ? lineNumberClassName : item.className + ' ' + lineNumberClassName; }); })(); </script> </main> <!-- end #main--> <footer id="footer"> <div id="footer-wrap"> <div class="copyright"> <div class="copyright">©2026 By 金学宁</div> <div class="framework-info"> <span>由</span> <a target="_blank" href="http://www.typecho.org">Typecho</a><span> 强力驱动</span> <span class="footer-separator">|</span> <span>主题</span> <a id="btheme" target="_blank" href="https://github.com/wehaox/Typecho-Butterfly">Butterfly</a> </div> <div class="footer_custom_text"><a href="https://beian.miit.gov.cn/" target="_blank">皖ICP备2022002179号-1</a></div> </div> </div> </footer> <style type="text/css" data-typed-js-css="true"> .typed-cursor { opacity: 1; } .typed-cursor.typed-cursor--blink { animation: typedjsBlink 0.7s infinite; -webkit-animation: typedjsBlink 0.7s infinite; animation: typedjsBlink 0.7s infinite; } @keyframes typedjsBlink { 50% { opacity: 0.0; } } @-webkit-keyframes typedjsBlink { 0% { opacity: 1; } 50% { opacity: 0.0; } 100% { opacity: 1; } } </style> <script> </script> <!--搜索 --> <div id="local-search"> <div class="search-dialog"> <nav class="search-nav"> <span class="search-dialog-title">本地搜索</span> <span id="loading-status"></span> <button class="search-close-button"> <i class="fas fa-times"></i> </button> </nav> <div class="search-wrap" style="display: block;"> <div id="local-search-input"> <form class="local-search-box" method="post" action="https://blog.aiappx.com/" role="search" id="search"> <label for="s" class="sr-only">搜索关键字</label> <input type="text" name="s" placeholder="回车查询" required="required"> </div> </form> <hr> <div id="local-search-results"></div> </div> </div> <div id="search-mask"></div> </div> </div> <!--搜索end --> <div class="js-pjax"> <script data-pjax src="https://blog.aiappx.com/usr/themes/butterfly/js/comjs.js?v1.8.0"></script> <script data-pjax src="https://blog.aiappx.com/usr/themes/butterfly/js/smooth.min.js"> </script> <script> (function() { const searchButton = document.getElementById('search-button'); const input = document.getElementById('dSearchIn'); searchButton.addEventListener('click', function() { input.style.width = '150px'; input.focus(); }); input.addEventListener('blur', function() { input.style.width = '35px'; }); })() </script> <script> document.addEventListener('DOMContentLoaded', ()=>{ initializeCodeToolbar(); tocCheck(); }); </script> <link rel="canonical" href="https://aiappx.com/index.php/archives/82/" /> <meta property="og:type" content="article" /> <meta property="og:url" content="https://aiappx.com/index.php/archives/82/" /> <meta name="twitter:title" property="og:title" itemprop="name" content="jsoup-1.13.1 核心 API 及中文用法说明" /> <meta name="twitter:description" property="og:description" itemprop="description" content="以下表格整理了 jsoup-1.13.1 最常用的核心 API,按功能模块分类,聚焦核心类 / 方法和中文用法说明,覆盖解析、DOM 操作、选择器、属性 / 文本处理等核心场景:jsoup 核心..." /> <meta property="og:site_name" content="生活中的ning" /> <meta name="twitter:card" content="summary" /> <meta name="twitter:domain" content="blog.aiappx.com" /> <script type="text/javascript"> (function () { window.TypechoComment = { dom : function (sel) { return document.querySelector(sel); }, visiable: function (el, show) { el.style.display = show ? '' : 'none'; }, create : function (tag, attr) { const el = document.createElement(tag); for (const key in attr) { el.setAttribute(key, attr[key]); } return el; }, inputParent: function (response, coid) { const form = 'form' === response.tagName ? response : response.querySelector('form'); let input = form.querySelector('input[name=parent]'); if (null == input && coid) { input = this.create('input', { 'type' : 'hidden', 'name' : 'parent' }); form.appendChild(input); } if (coid) { input.setAttribute('value', coid); } else if (input) { input.parentNode.removeChild(input); } }, getChild: function (root, node) { const parentNode = node.parentNode; if (parentNode === null) { return null; } else if (parentNode === root) { return node; } else { return this.getChild(root, parentNode); } }, reply : function (htmlId, coid, btn) { const response = this.dom('#respond-post-82'), textarea = response.querySelector('textarea[name=text]'), comment = this.dom('#' + htmlId), child = this.getChild(comment, btn); this.inputParent(response, coid); if (this.dom('#respond-post-82-holder') === null) { const holder = this.create('div', { 'id' : 'respond-post-82-holder' }); response.parentNode.insertBefore(holder, response); } if (child) { comment.insertBefore(response, child.nextSibling); } else { comment.appendChild(response); } this.visiable(this.dom('#cancel-comment-reply-link'), true); if (null != textarea) { textarea.focus(); } return false; }, cancelReply : function () { const response = this.dom('#respond-post-82'), holder = this.dom('#respond-post-82-holder'); this.inputParent(response, false); if (null === holder) { return true; } this.visiable(this.dom('#cancel-comment-reply-link'), false); holder.parentNode.insertBefore(response, holder); return false; } }; })(); </script><script src="0" type="text/javascript"></script> <script> document.addEventListener('DOMContentLoaded', function() { var aElements = document.getElementsByTagName('a'); var domain = document.domain; for (var i = 0; i < aElements.length; i++) { var aElement = aElements[i]; var url = aElement.href; if (url && url.length > 0 && url.indexOf(domain) === -1 && url !== 'javascript:void(0);') { aElement.setAttribute('target', '_blank'); } } }); </script> </div> <!--js-pjax end--> <div id="rightside"> <div id="rightside-config-hide" class=""> <button id="font-plus" type="button" title="放大字体"><i class="fas fa-plus"></i></button> <button id="font-minus" type="button" title="缩小字体"><i class="fas fa-minus"></i></button> <button id="readmode" type="button" title="阅读模式"> <i class="fas fa-book-open"></i> </button> <button id="translateLink" type="button" title="简繁转换"> 繁 </button> <button id="darkmode" type="button" title="浅色和深色模式转换"> <i class="fas fa-adjust"> </i> </button> <button id="hide-aside-btn" type="button" title="单栏和双栏切换"> <i class="fas fa-arrows-alt-h"> </i> </button> </div> <div id="rightside-config-show"> <button id="rightside_config" type="button" title="设置"> <i class="fas fa-cog fa-spin"> </i> </button> <button class="close" id="mobile-toc-button" type="button" title="目录"> <i class="fas fa-list-ul"> </i> </button> <a id="to_comment" href="#comments" title="直达评论"> <i class="fas fa-comments"> </i> </a> <button id="go-up" type="button" title="回到頂部" class="show-percent"> <span class="scroll-percent"></span> <i class="fas fa-arrow-up"> </i> </button> </div> </div><!--pjax--> <!--pjax end--> </body> </html>