Jsoup :eq(n) 选择器
我有一个 test.htm 页面:
<html>
<body>
<div class="partA">
1
</div>
<div class="partB">
2
</div>
<div class="partC">
3
</div>
<div class="partB">
4
</div>
<div class="partD">
5
</div>
</body>
</html>
我想获得第一个带有 class="partB" 的 div。
Document doc=Jsoup.parse( new File("test.htm"), "utf-8" );
Elements select=doc.select( "div.partB:eq(0)" );
System.out.println( select.get( 0 ).html() );
运行异常是:
Exception happens:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.RangeCheck(ArrayList.java:546)
at java.util.ArrayList.get(ArrayList.java:321)
at org.jsoup.select.Elements.get(Elements.java:501)
at Test.main(Test.java:13)
相反,我得到了 size=0 的元素。 任何帮助。谢谢~
I hava a test.htm page:
<html>
<body>
<div class="partA">
1
</div>
<div class="partB">
2
</div>
<div class="partC">
3
</div>
<div class="partB">
4
</div>
<div class="partD">
5
</div>
</body>
</html>
I want get the first div with class="partB".
Document doc=Jsoup.parse( new File("test.htm"), "utf-8" );
Elements select=doc.select( "div.partB:eq(0)" );
System.out.println( select.get( 0 ).html() );
The run exception is:
Exception happens:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.RangeCheck(ArrayList.java:546)
at java.util.ArrayList.get(ArrayList.java:321)
at org.jsoup.select.Elements.get(Elements.java:501)
at Test.main(Test.java:13)
Instead, I got a size=0 elements.
Any helps. Thanks~
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
eq(n)
选择器检查元素的同级索引,即来自元素父元素的计数。因此,在您的示例中,您的选择器正在寻找具有类“partB”的 div,并且这是其父元素(主体)的第一个子元素。不存在这样的元素,这就是为什么您得到零长度返回的原因。我建议您使用:
按类查找 div,然后使用 Element 的列表访问器进行 winnows。
The
eq(n)
selector checks the element's sibling index, i.e. the count from the element's parent. So in your example, your selector is looking for a div with both class 'partB' and that is the first child element of its parent (the body). No such element exists, which is why you get a zero length return.I suggest you use:
Which finds the divs by class and then winnows using the list accessor of Element.