java - JSoup 解析 HTML 问题

标签 java html jsoup

我正在尝试使用 JSoup 解析一些 html,大致如下所示:

<div class="mod qmy_text withanno">
    <ul class="yfncnhl mytext"></ul>
    <h3>
        <span>Monday, August 12, 1999</span>
    </h3>
    <ul>
        <li><a href="some_link_here">Title of My Article</a><cite>News
                Source<span>(&nbsp;(Sun, Aug 12)</span>
        </cite></li>
    </ul>

我的问题是,如何解析该 HTML,以便只能返回 <cite> 中的内容——8 月 12 日,星期日。

到目前为止,我只能使用表达式输出 h3 之后的日期

Elements links = doc.select("div[class=mod qmy_text withanno] > h3");
    System.out.println(links.text());

最佳答案

让我们格式化您的 HTML,使其仅包含您要查找的元素的路径。它看起来像

<div class="mod qmy_text withanno">
    ...
    <ul>
        <li>
            ...
            <cite>News Source
                 <span>(&nbsp;(Sun, Aug 12)</span>
            </cite>
        </li>
    </ul>

因此,您的选择可能类似于 div.mod.qmy_text.withanno > ul > li > cite > span。所以用这样的代码

Elements span = doc.select("div.mod.qmy_text.withanno > ul > li > cite > span");
String spanText = span.text();

我们的 spanText 将包含 ((8 月 12 日星期日)

如果您只想获取最后一个(和最后一个)之间的部分来获取Sun, Aug 12,您可以使用

String date = spanText.substring(spanText.lastIndexOf('(')+1, spanText.lastIndexOf(')'));

关于java - JSoup 解析 HTML 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32443312/

相关文章:

java - 如何将 html 注释添加到 jsoup 注释中

java - 在新标签页中打开 Google 链接

javascript - 在我的javascript中,如何解决 "\u0026"、 "&amp;"和 "&"之间的编码问题?

javascript - 如何根据 JavaScript 中的值对表行进行排序

java - 如何使用 Java 从网站中提取 HTML 表格数据?

java - 包装 span 的内容

java - 添加方法/修改 jar 的类

java - 样式 toast 背景 - 找不到与给定名称匹配的资源

java - 区分委托(delegate)、组合和聚合(Java OO 设计)

html - 如何使 div 表现得像溢出 :hidden and overflow:visible