2014-09-02 68 views
1

试图使用Jsoup选择器来选择div中的所有内容,但同时不选择具有社交类或媒体的div。我知道我可以做一个简单的选择和循环,但会预期:不是功能为我的目的工作。也许,我的选择器语法是错误的。Jsoup不选择不返回结果

public static void main(String args[]) throws ParseException { 
    String html = "<html>\n" + 
      "<body>\n" + 
      "<div class=\"content\">\n" + 
      "\t<p>some paragraph</p>\n" + 
      "\t<div class=\"social media\">\n" + 
      "\tfind us on facebook\n" + 
      "\t</div\n" + 
      "</div>\n" + 
      "</body>\n" + 
      "</html>"; 
    Document doc = Jsoup.parse(html); 
    Elements elements = doc.select("div.content div:not(.social)"); 
    System.out.println(elements.text()); 
} 

预期的结果:“有些段落”

实际结果:空

+0

反过来会找到'div.content'的'p'儿童,换句话说'doc.select(“div中。内容p“)'。 – Pshemo 2014-09-02 18:16:07

+0

我的回答有帮助吗? – alkis 2014-12-01 11:06:21

回答

4

你的选择,因为它是相匹配,没有class="social",并DIV的孩子的用class="content"的div。有预期的结果使用

Elements elements = doc.select("div.content :not(.social)"); 

或者这

Elements elements = doc.select("div.content").not(".social");