【问题标题】:How to find a child html element by id with jsoup?如何使用 jsoup 通过 id 查找子 html 元素?
【发布时间】:2016-02-21 11:26:01
【问题描述】:

我正在使用 Jsoup 解析一个站点的 html 代码。我需要找到一些具有特定 id 的 html 元素,但它们的父级树使我的任务复杂化。所以我想知道是否可以搜索特定的 html 元素而不必首先搜索他们的所有父母。

例如我正在做下一个:

Elements el=elements.select(".scroller.context-inplay").select(".zone.grid-1-1").select(".grid-1").select(".module-placeholder");

我想知道是否有一种简单的方法可以通过它的 id 搜索获得与此代码相同的元素

【问题讨论】:

  • 你能分享你的 HTML 吗?

标签: html search jsoup element


【解决方案1】:

html 元素的 id 在页面中应该是唯一的。不幸的是,您在野外发现的一些 html 打破了这一要求。但是,如果您的 html 源代码遵循标准,您可以简单地使用 # css 运算符来选择有问题的元素:

 Element el = doc.select("#someID").first();

或者你也可以直接使用getElmentByIdJsoup方法:

Element el = doc.getElmentById("someID");

此外,如果您决定按照问题中的建议使用类名,则可以轻松地将所有选择合并到一个选择器中:

Elements els = elements.select(".scroller.context-inplay .zone.grid-1-1 .grid-1 .module-placeholder");

CSS 选择器中的空格表示该空格右侧的任何子选择器必须是左侧内容的子选择器。

【讨论】:

  • 页面是否有可能使用 Firefox 创建 id 而我使用 Jsoup 时不创建 id?
  • 有可能,是的。页面加载到浏览器后,JavaScript 可以设置和取消设置任何元素的 id。 JSoup 不运行 JavaScript,因此在使用 JSoup 时您不会看到变化。然而,更常见的情况不是设置/更改元素 ID,而是通过 AJAX 加载页面部分。您可以在关闭 JavaScript 时在浏览器中进行检查。
猜你喜欢
  • 1970-01-01
  • 2012-12-18
  • 2012-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-11
  • 1970-01-01
相关资源
最近更新 更多