27

这是 HTML 结构:

在此处输入图像描述

Element link = doc.select("div.subtabs p").first();

这似乎不起作用。我该如何选择p

4

6 回答 6

26

class="subtabs" 的 DIV 实际上不是元素的父p元素,而是p. 要检索p,您需要首先获取对具有 id="content" 的父 DIV 的引用:

Element link = doc.select("div#content > p").first();

此外,您需要该>符号来表明您正在选择 div#content 的子项。

parent > child:直接从 parent 下降的子元素,例如 div.content > p 找到 p 个元素;和 body > * 找到 body 标签的直接子元素

如果您以后遇到 JSOUP CSS 选择器,请查看JSOUP 选择器语法手册,其中有一些很好的示例和解释。

于 2012-05-22T04:51:47.430 回答
4

div#content p. 它不是.subtabs.

于 2012-05-22T04:53:29.677 回答
1

您尝试提取的p标签不是div的子标签。它是一个兄弟姐妹。父 div 的 id 是内容,您想要的 p 标签是其父级中的第一个p标签所以使用doc.select("div#content > p").first();

#表示 id,>表示 RHS 是 LHS 的子代。因此,该语句意味着获取第一段,该段落是 div 的子项,以 id 为内容

于 2014-02-08T12:25:09.253 回答
1

Chrome SelectorGadget非常有助于为 jSoup 构建 CSS 选择器,只需点击即可。在尝试针对特定领域时,它为我节省了数小时的开发时间。

于 2015-12-14T13:32:30.233 回答
1

Element link = doc.select("div.subtabs + p") 它找到紧跟在兄弟元素之前的元素

于 2017-09-19T08:57:07.080 回答
0

试试这个:

Element link = doc.select("div.subtabs > p").first();
于 2019-06-04T08:26:38.147 回答