这是 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 的子项。
parent > child:直接从 parent 下降的子元素,例如 div.content > p 找到 p 个元素;和 body > * 找到 body 标签的直接子元素
如果您以后遇到 JSOUP CSS 选择器,请查看JSOUP 选择器语法手册,其中有一些很好的示例和解释。
div#content p
. 它不是.subtabs
.
您尝试提取的p标签不是div的子标签。它是一个兄弟姐妹。父 div 的 id 是内容,您想要的 p 标签是其父级中的第一个p标签。所以使用doc.select("div#content > p").first();
#表示 id,>表示 RHS 是 LHS 的子代。因此,该语句意味着获取第一段,该段落是 div 的子项,以 id 为内容
Chrome SelectorGadget非常有助于为 jSoup 构建 CSS 选择器,只需点击即可。在尝试针对特定领域时,它为我节省了数小时的开发时间。
Element link = doc.select("div.subtabs + p")
它找到紧跟在兄弟元素之前的元素
试试这个:
Element link = doc.select("div.subtabs > p").first();