簡體   English   中英

Jsoup在元素之前獲取評論

[英]Jsoup get comment before element

說我有這個HTML:

<!-- some comment -->
<div class="someDiv">
... other html
</div>
<!-- some comment 2 -->
<div class="someDiv">
... other html
</div>

我目前正在所有class == someDiv的div並抓取它們以獲取信息。 為此,我只是在這樣做:

Document doc = Jsoup.connect(url).get();
Elements elements = doc.select(".someDiv");
for (Element element : elements) {
    //scrape stuff
}

在for循環中,是否有任何方法可以在我所在的特定div.someDiv元素之前找到注釋標簽?

如果無法做到這一點,我是否應該按照此要求以不同的方式解析此html結構?

感謝您的任何建議。

盡管這個問題有幾個月了,但我的回答還是完整的。 如何使用previousSibling獲取先前的Node 當然,在實際代碼中,您可能想檢查一下,是否真的在此處得到Comment

String html = "<!-- some comment --><div class=\"someDiv\">... other html</div><!-- some comment 2 --><div class=\"someDiv\">... other html</div>";
Document doc = Jsoup.parseBodyFragment(html);
Elements elements = doc.select(".someDiv");
for (Element element : elements) {
    System.out.println(((Comment) element.previousSibling()).getData());
}

這將產生:

some comment 
some comment 2 

(使用jsoup 1.6.1和1.6.3測試)

嘗試這樣的事情,遍歷所有注釋並檢查它們的兄弟姐妹是否是您所關注的div

for (int i = 0; i < doc.childNodes().size(); i++) {
        Node child = doc.childNode(i);
        if (child.nodeName().equals("#comment")) {
            //do some checking on child.nextSibling() , like hasAttr or attr to figure out if it the div you were expecting for...
        }
}

看看jsoup Node文檔

元素elements = doc.select(“ div.someDiv”);

http://jsoup.org/cookbook/

暫無
暫無

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

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