【问题标题】:Retrieve time tag with Jsoup使用 Jsoup 检索时间标签
【发布时间】:2022-04-17 16:06:56
【问题描述】:

这是我的 HTML:

<div id="trestleLifts">
            <header class="tableHeader">
                <time>as of 4/23/15 @5:18 AM MST</time>
                <h2>Lifts</h2>
            </header>

我需要时间标签,但无法解决。

我尝试使用此代码,但应用程序崩溃

  Document docw = Jsoup.connect(url).get();
  Element doc = docw.getElementById("header.tableHeader");
            Elements h1=doc.getElementsByTag("time");
            String tit = h1.text();

【问题讨论】:

  • 可能没有 id 为 header.tableHeader 的元素 - 也许您正在寻找像 docw.select("#trestleLifts time") 这样的选择器,然后您应该选择第一个元素
  • 不会崩溃,但什么也不显示。我用这个网址trestlebikepark.com/Lift_TrailStatus.html

标签: java jsoup


【解决方案1】:
Element doc = docw.getElementById("header.tableHeader");

没有多大意义,因为没有带有id="header.tableHeader" 属性的标签。

由于您使用的是 CSS 选择器,因此您希望使用 select 方法而不是选择 &lt;header class="tableHeader"&gt;

Elements doc = docw.select("header.tableHeader");

不仅仅是选择time元素

Elements h1 = doc.select("time");

顺便说一句,您可以通过一个电话完成所有操作

Elements h1 = doc.select("header.tableHeader time");

根据您包含要解析的页面地址的评论,此解决方案的问题似乎是页面加载后&lt;time&gt; 为空&lt;time&gt;&lt;/time&gt;,其内容稍后由 JavaScript 生成。在这种情况下,Jsoup 将无法为您提供帮助,因为它是不支持 JS 引擎的 HTML 解析器。您将不得不使用不同的工具,例如 selenium webdriver 或 HTMLutils。

【讨论】:

  • 或者只是docw.select("header.tableHeader time")——也就是说,您可以堆叠选择器而不是进行多次选择调用。
  • 不会崩溃,但没有显示时间,字符串结果是; “Lift Trails”我使用这个网址 trestlebikepark.com/Lift_TrailStatus.html
  • docw.select("header.tableHeader time") 显示任何结果
  • 考虑打印docw 就像System.out.println(docw) 一样,你会看到它代表什么HTML。从我看到的time 标签放在header 中是空的&lt;time&gt;&lt;/time&gt; 这就是为什么你没有看到任何结果。
  • 那么如何把这个时间值放到textview中呢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-19
  • 2016-06-28
  • 2021-08-02
  • 1970-01-01
  • 1970-01-01
  • 2012-09-14
  • 1970-01-01
相关资源
最近更新 更多