Jsoup :eq(n) 选择器

发布于 2024-12-02 01:07:55 字数 969 浏览 0 评论 0原文

我有一个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

っ左 2024-12-09 01:07:55

eq(n) 选择器检查元素的同级索引,即来自元素父元素的计数。因此,在您的示例中,您的选择器正在寻找具有类“partB”的 div,并且这是其父元素(主体)的第一个子元素。不存在这样的元素,这就是为什么您得到零长度返回的原因。

我建议您使用:

Element div = doc.select("div.partB").first();

按类查找 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:

Element div = doc.select("div.partB").first();

Which finds the divs by class and then winnows using the list accessor of Element.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文