在第一个SAME标签之后获取所有标签的内容 - Jsoup

时间:2014-12-20 21:13:24

标签: java html web-scraping jsoup

尝试使用jsoup收集一些网站内容,并遇到了一些信息收集问题。 我想要做的是收集所有p标签的内容

-10)

enter image description here

我知道你可以像这样收集第一个:

.select("div#news_content_wide > p").first(); 

但有没有办法在不知道你想要的金额的情况下选择第一个内容?

由于

2 个答案:

答案 0 :(得分:2)

您可以尝试div#news_content_wide > p~p使用general sibling combinator

这里发生的事情是,任何具有兄弟p优先级的p将被选中,所以除了第一个之外基本上都是。

答案 1 :(得分:0)

你可以创建一个函数,将目标div作为参数,并且你不想返回段落元素... I.E. '1'(实际上为零)......

<body>

<script>

      function removeElement( div, num ) {
        var parent = document.getElementById( div );
        var returnElems = [];
        if( parent.children.length > 1 && parent.children[0].nodeType === 1 ) {
            if( parent.children[0].tagName === "P") {
                var paras = parent.children;

                for( var i = 0; i < paras.length; i++) {
                    if( i != (num - 1) ) {
                        returnElems.push(paras[i]);
                    }

                }
            }
        }
          return returnElems;

      }

  </script>

<div id="news_content_wide">
    <p>DON'T RETURN THIS</p>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
</div>
</body>

CONSOLE

var elems = removeElement("news_content_wide", 1);
console.log(elems);