【问题标题】:JSoup - Select only one listobjectJSoup - 仅选择一个列表对象
【发布时间】:2012-06-10 10:25:50
【问题描述】:

我正在尝试使用 JSoup 和 Java 从网站中提取某些特定数据。到目前为止,我已经成功地实现了我想要实现的目标。

<ul class="beverageFacts">
<li><span>Årgång</span><strong>**2009**&nbsp;</strong></li>

我想提取上面 HTML 中 ** 里面的内容。我可以通过使用 JSoup 中的代码来做到这一点:

doc.select("ul.beverageFacts li:lt(1) strong");

我使用 lt(1) 是因为后面还有几个我想省略的列表项。

现在是我的问题;我从中提取数据的网站上有一个可选的信息选项卡,它还有一个名为“beverageFacts”的类。我的代码现在也会提取该数据,我不希望它这样做。

代码在网站源代码的更下方,我也尝试在此处使用索引器 :lt(1),但它不起作用。

<div id="beverageMoreFacts" style="display: block">
<ul class="beverageFacts"><li class="half">
<span> Färg</span><strong> Ljusgul färg.</strong>

我的总体结果是我提取了“2009 Ljusgul färg”。而不仅仅是“2009”。如何编写我的代码,以便它只提取它成功完成的第一部分,而省略其余部分?

编辑: 我得到了同样的结果:

 doc.select("ul.beverageFacts li:eq(0) strong");

谢谢, Z

【问题讨论】:

    标签: java parsing selector jsoup


    【解决方案1】:

    你只符合一个部分,而你应该符合两个。试试这个:

    doc.select("ul.beverageFacts:eq(0) li:eq(0) strong");
    

    你的意思是:给我每个饮料清单的第一个清单项目。你需要说的是:给我第一个饮料清单的第一项。

    【讨论】:

    • 好的,我现在已经尝试过了,这很有意义!但是,这会返回错误的列表项,并忽略我所追求的!我在这里粘贴了源:pastebin.com/5muzFQ7i 我想要的信息在第 308 行,而提取的信息在第 435 行。源中的第一个不应该是索引 0 吗?非常感谢你帮助我! =)
    猜你喜欢
    • 2023-03-18
    • 2011-04-25
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 2014-07-31
    相关资源
    最近更新 更多