有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java 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>标记之后

例如(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) 个答案

  1. # 1 楼答案

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

    link.select("h2 ~ p").get(0).text(); // returns "content"
    link.select("h2 ~ p").get(1).text(); // returns "new content od 2"
    
  2. # 2 楼答案

    只需使用最初的方法在选定的.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());
                }
             }