簡體   English   中英

整理HTML:使用JSOUP在特定段落之后獲取特定html定義列表

[英]Parising HTML: Getting particular html definition list after a particular paragraph using JSOUP

我正在嘗試使用JSoup和Java在滿足我的條件的特定標簽之后獲取定義列表(或任何標簽)的內容。 作為示例,假設我們有一個html文檔,如下所示。

<p>PageID: 2816; NS: 0; Title: some text; 
Image url: 
Content:
{{Wort der Woche}}
{{Siehe auch}}
</p>
<h2><span class="1" id="e1">some text</span></h2>
<h3><span class="1" id="e2">some text</span></h3>

<p>{{Transportation}}
</p>
<dl>
    <dd>Flying</dd>
    <dd>Driving</dd>
    <dd>Sailing
        <dl>
            <dd>Boat</dd>
            <dd>Ship</dd>
        </dl>
    </dd>
</dl>

<p>{{Activities}}
</p>
<dl>
    <dd>Shopping</dd>
    <dd>Painting</dd>
</dl>

假設我們要獲取在“ Transportation”之后出現的“ dl”標簽的內容。 即內容:

<dl>
    <dd>Flying</dd>
    <dd>Driving</dd>
    <dd>Sailing
        <dl>
            <dd>Boat</dd>
            <dd>Ship</dd>
        </dl>
    </dd>
</dl>

我最初的嘗試是獲取該段落的索引(例如1st,2nd等),然后獲取相應的dl,但這似乎不起作用,因為可以嵌套dls。

有人對如何獲得這種內容有建議嗎?

假設HTML結構像您的示例一樣,其中<dl>始終跟隨<p> ,則可以:

  • 通過doc.getElementsContainingOwnText("txt")獲得所需的<p>元素;
  • 使用element.nextElementSibling();獲得以下<dl> element.nextElementSibling();

這是在您的HTML上運行的示例代碼:

public static void main(String[] args) {
    Document doc = Jsoup.parse("<p>PageID: 2816; NS: 0; Title: some text; \r\nImage url: \r\nContent:\r\n{{Wort der Woche}}\r\n{{Siehe auch}}\r\n</p>\r\n<h2><span class=\"1\" id=\"e1\">some text</span></h2>\r\n<h3><span class=\"1\" id=\"e2\">some text</span></h3>\r\n\r\n<p>{{Transportation}}\r\n</p>\r\n<dl>\r\n    <dd>Flying</dd>\r\n    <dd>Driving</dd>\r\n    <dd>Sailing\r\n        <dl>\r\n            <dd>Boat</dd>\r\n            <dd>Ship</dd>\r\n        </dl>\r\n    </dd>\r\n</dl>\r\n\r\n<p>{{Activities}}\r\n</p>\r\n<dl>\r\n    <dd>Shopping</dd>\r\n    <dd>Painting</dd>\r\n</dl>");
    Elements e = doc.getElementsContainingOwnText("{{Transportation}}");
    Element nextDL = e.get(0).nextElementSibling();
    System.out.println(nextDL);
}

輸出:

<dl> 
    <dd>Flying</dd> 
    <dd>Driving</dd> 
    <dd>Sailing 
        <dl> 
            <dd>Boat</dd> 
            <dd>Ship</dd> 
        </dl> 
    </dd> 
</dl>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM