Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JSOUP中选择此元素?_Java_Jsoup - Fatal编程技术网

Java 如何在JSOUP中选择此元素?

Java 如何在JSOUP中选择此元素?,java,jsoup,Java,Jsoup,这是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(); 此外,还需要>符号来指示您正在选择divcontent的子级 父元素>子元素:直接从父元

这是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();
此外,还需要>符号来指示您正在选择divcontent的子级

父元素>子元素:直接从父元素派生的子元素,例如div.content>p查找p元素;和body>*查找body标记的直接子级

如果将来遇到JSOUP CSS选择器的问题,请查看,其中有一些很好的示例和说明。

divp。它不是.subtabs的子级。

您试图提取的p标记不是div的子级。它是同级。父div的id是content,您想要的p标记是其父div中的第一个p标记。因此,首先使用doc.selectdivcontent>p

均值id和>表示RHS是LHS的子对象。因此,该语句意味着获取第一个段落,该段落是div的子段落,id作为内容

Chrome非常有助于为jSoup构建CSS选择器,只需点击即可。在尝试以特定字段为目标时,它为我节省了数小时的开发时间。

Element link=doc.selectdiv.subtabs+p 它会查找前面紧跟着同级的元素,请尝试以下操作:

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

+1-非常清楚的问题正如一句老话所说,HTML页面的源代码的屏幕截图上有一个覆盖的潦草的点,指出您要选择哪个元素words@Rob原来的说法是拉丁语,IIRC.+1-实际上,在这种情况下省略>也是正确的:ef->E元素派生的F元素。最佳选择器高度依赖于HTML结构的其余部分以及它的稳定性。我的建议只解决了尖锐的问题。从我们在屏幕截图中看到的情况来看,最好在.subtabs中假设ps,然后使用>。我认为这很好。我们来这里不是为了解决op的所有问题,但我只是提供足够的帮助,帮助他/她了解至少一个可能解决眼前问题的解决方案,并且希望提供足够的指导,以便如果所说的答案不能完全解决问题,他/她可以轻松地自己解决。如果你真的想彻底,你可以在你的回答中加上你告诉我的内容作为补充谢谢,如果在表单标签中有另一个标签,那么这个查询会转到该标签吗?老实说,我不是100%确定,但只要快速添加一个标签,看看会发生什么,应该很容易。我怀疑.first可能会确保您只获取p的第一个实例,但尝试它是确定这一点的最佳方法:需要注意的一点是,如果您选择一个集合,您将需要带有s的元素,而不仅仅是元素。希望有帮助!根据本例中的上下文判断,以及我们知道元素是单个实体而不是集合这一事实,我的钱只返回1个p。如果你的p不是第一个或唯一一个,你就必须采取不同的方法。好的,那么我实际上迭代元素。或:同级索引等于n的eqn元素。看看那个链接,烹饪书链接。Jsoup是一个非常好的工具,如果您经常使用jQuery,它确实有助于使其平稳过渡。祝你好运