这是HTML结构:
Element link = doc.select("div.subtabs p").first();
那似乎不起作用。我怎么选择那个 p
元素?
class="subtabs" 的 DIV 实际上不是 p
元素的父元素,而是 p
的兄弟元素。要获取 p
,你需要先获取具有 id="content" 的父 DIV 的引用:
Element link = doc.select("div#content > p").first();
此外,您需要使用>
符号来指示您选择的是div#content的子元素。
如果在未来使用JSOUP CSS选择器时遇到困难,请查看JSOUP Selector Syntax cookbook,其中有一些很好的示例和解释。parent > child:直接从父元素传承下来的子元素,例如div.content > p找到p元素;body > *找到body标签的直接子元素
.first()
可能会确保您只获取p
的第一个实例,但尝试它是确定的最好方法 :) 要注意的一件事是,如果选择集合,则需要使用带有"s"的Elements
而不仅仅是Element
。希望这可以帮助! - jamesmortensenElement
是单个实体而不是集合这一事实,我猜只会返回一个 p
。http://jsoup.org/cookbook/extracting-data/selector-syntax. 如果您的 p
不是第一个(或唯一一个),则必须采用不同的方法。 - jamesmortensen:eq(n)
,表示兄弟节点索引等于n的元素。请查看链接,即食谱链接。 Jsoup是一个非常好的工具,如果您经常使用jQuery,它可以帮助使过渡更加平稳。祝好运! :) - jamesmortensen元素不是 .subtabs
的子元素。
>
也是正确的:E F --> 一个从 E 元素继承而来的 F 元素
。 - jamesmortensen.subtabs
内部有p
元素,并使用>
符号。 - Hauke Ingmar Schmidtdoc.select("div#content > p").first();
#表示id,>表示RHS是LHS的子元素。因此,该语句的意思是获取作为子元素具有id为content的Element link = doc.select("div.subtabs + p")
试试这个:
Element link = doc.select("div.subtabs > p").first();