尝试使用 JSOUP 在嵌套的 DIV 标签中检索 SPAN 标签

Trying to retrieve SPAN tags within nested DIV tags using JSOUP

您好,我正在尝试使用 JSoup 提取嵌套 DIV 标签中的跨度标签。下面的代码只是较大代码的一小段。

<div class="formitem formgroup horizontal">
  <div class="formitem formgroup horizontal">
    <div class="formitem formgroup vertical" style="width:325px">
      <div class="formitem formgroup horizontal">
        <div class="formitem formgroup vertical" style="width:325px;">
          <div class="formitem formgroup horizontal">
            <span class="formitem formfield">
                            <span class="value" style="font-weight:bold">47 Lower River St</span>
            </span>
            <span class="formitem formfield">
                            <span class="value" style="font-weight:bold">531</span>
            </span>
          </div>
        </div>
      </div>
      <div class="formitem formgroup horizontal">
        <span class="formitem formfield">
                    <span class="value" style="font-weight:bold">Toronto</span>
        </span>
        <span class="formliteral formitem" />
        <span class="formitem formfield">
                    <span class="value">Ontario</span>
        </span>
        <span class="formliteral formitem" />
        <span class="formitem formfield">
                    <span class="value">M5A0G1</span>
        </span>
      </div>
    </div>
    <div class="formitem formgroup vertical" style="width:150px;">
      <div class="formitem formgroup horizontal">
        <span class="formitem formfield">
                    <label>List:</label>
                    <span class="value" style="font-weight:bold">9,900</span>
        </span>
        <span class="formitem formfield">
                    <label>For:</label>
                    <span class="value" style="font-weight:bold">Sale</span>
        </span>
      </div>
    </div>
  </div>
  <span class="formitem formfield">
        <span class="value">Toronto C08</span>
  </span>
  <span class="formliteral formitem" />
  <span class="formitem formfield">
        <span class="value">Moss Park</span>
  </span>
  <span class="formliteral formitem" />
  <span class="formitem formfield">
        <span class="value">Toronto</span>
  </span>
  <span class="formitem formfield">
        <span class="value">120-21-S</span>
  </span>
</div>

我正在尝试提取最后一个 SPAN 标签中的文本(多伦多 C08、莫斯公园、多伦多和 120-21-S)

<span class="formitem formfield">
    <span class="value">Toronto C08</span>
</span>
<span class="formliteral formitem" />
<span class="formitem formfield">
    <span class="value">Moss Park</span>
</span>
<span class="formliteral formitem" />
<span class="formitem formfield">
    <span class="value">Toronto</span>
</span>
<span class="formitem formfield">
    <span class="value">120-21-S</span>
</span>

我已经成功地解析了文档的其他部分,但是,我似乎无法隔离这些跨度。代码片段来自一个更大的页面 (full page)。我可能使用了错误的方法,但这是我为捕获父 DIV 之间的跨度所做的(结果在 post 顶部)。

Elements elements = doc.select("div[class=formitem legacyBorder formgroup vertical]");
        Element zoneElement = elements.select("div[class=formitem formgroup vertical")
                 .select("[style=width:500px]").select("div[class=formitem formgroup horizontal").first();

所以现在我有了第一个元素,但我需要在所选代码块末尾的最后 6 个跨度标记。谢谢

打开浏览器的 developer tool (F12),select "inspect elements" 工具,突出显示您想要的字段(例如 TORONTO C08)并选择其 css selector。对于 "TORONTO C08" 它将是:

#C3627690 > div:nth-child(3) > div:nth-child(2) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(2) > div:nth-child(1) > span:nth-child(2) > span:nth-child(1)

对所有其他元素执行相同的操作。获得所有 select or 后,仔细检查它们 - 也许它们具有共同的模式(例如,仅在第 3 个值不同),因此您将能够用循环迭代它们。