jsoup:解析特定标记之后的某个标记的数据

时间:2017-05-03 19:09:54

标签: java web-scraping jsoup

我试图通过Java中的jsoup解析过去3天的某些信息-_-,这是我的代码:

Document document = Jsoup.connect(urlofpage).get();
Elements links = document.select(".contentBox");

    for (Element link : links) {
        // String name = link.text();
        String title = link.select("h2").text();
        String content = link.select("p").text();
        System.out.println(title);
        System.out.println(content);
    }

它是按照指示获取数据,取出h2和p的数据分开,但问题是,我想解析<p>标记内的数据,这个数据就在每<h2>之后} tag。

例如(HTML内容):

<h2>main content</h2>
<div class="acx"><div>
<p>content</p>
<p>content 2</p>

<h2>content 2</h2>
<div class="acx"><div>
<p>new content od 2</p>
<p>new 2</p>

现在它应该像(在数组中)一样获取:

array[0] = "content content 2",
array[1] = "new content od 2 new 2",  

任何解决方案?

2 个答案:

答案 0 :(得分:0)

您可以使用“〜”下一个元素选择器。例如

WS_CHILD

答案 1 :(得分:0)

只需使用您的初始方法迭代所选.contentBox类中的所有必要标记:

Document document = Jsoup.connect(urlofpage).get();
Elements links = document.select(".contentBox");

       for (Element link : links) {
            for (Element h2Tag : link.select("h2"))
            {
               System.out.println(h2Tag.text());
            }
            for (Element pTag : link.select("p"))
            {
               System.out.println(pTag.text());
            }
         }