2017-05-18 17 views
0

でクラス別の要素を選択すると、私はJSoup私は、次のHTMLを持ってJSoup

<div class="user-info clearfix"> 
    <div class="user-review-name clearfix"> 
     <a class="user-review-name-link" rel="nofollow" title="go to tom&#39;s profile"> 
      tom 
     </a> 
    </div> 
    <div class="clearfix"> 
     2 cars 
    </div> 

を使用してフラグメントから車の名前と電話番号を抽出することができるようにしたい私は名前を取得することができますokですが、私はclearfixクラスの内容を取得できません。これは私のコードです。

 Elements reviews = doc.select("div.review"); 
     for (Element review : reviews) { 
      Elements subreviews = review.select("div.user-info"); 
      for (Element subreview : subreviews) { 
       System.out.println(subreview.select("a.user-review-name-link").text()); 
       System.out.println(subreview.select("div:not(.user-review-name-link)").text()); 
      } 
     } 

私はさまざまな組み合わせを試してみましたが、何らかの理由で私は、それ自体で2台を取得することはできません。助けて?

System.out.println(subreview.select("div.clearfix").text()); 

私は、これはあまりにも動作するだろうと思っているだろうが、それはあなたが行うことができます。この形式「のトム2台のトム2台」

+0

最後に、3番目のdiv要素内のテキストを要求してしまい、うまくいきました。すなわち、review.select( "div.clearfix")。get(3).text() – user2254180

答えて

1

生成:

final StringBuffer buff = new StringBuffer(); 
Elements result = doc.select("div.clearfix"); 

    result.traverse(new NodeVisitor() { 
     public void head(Node node, int depth) { 
      // DEBUG: System.out.println("Entering tag: " + node.nodeName()); 
      if(node instanceof TextNode) { 
       buff.append(((TextNode) node).text()); 
      } 
     } 
     public void tail(Node node, int depth) { 
      //Nothing to see here 
     } 
    }); 

は、ここでバフの内容を印刷します。

関連する問題