2016-07-28 47 views
4

私はリンクされたプロファイルからjsoupを使って電子メールのアドレスと電話番号を抽出しようとしていますが、これらの情報はそれぞれテーブルにあります。私はそれらを抽出するコードを書いたが、それは動作しません、コードは任意のリンクされたプロファイルで動作するはずです。どんな助けや指導も大歓迎です。ここjsoupでテーブルを解析する

public static void main(String[] args) { 
    try { 

     String url = "https://fr.linkedin.com/"; 
     // fetch the document over HTTP 
     Document doc = Jsoup.connect(url).get(); 

     // get the page title 

     String title = doc.title(); 
     System.out.println("Nom & Prénom: " + title); 
     // first method 
     Elements table = doc.select("div[class=more-info defer-load]").select("table"); 
     Iterator <Element> iterator = table.select("ul li a").iterator(); 
     while (iterator.hasNext()) { 
      System.out.println(iterator.next().text()); 
     } 
     // second method 
     for (Element tablee: doc.select("div[class=more-info defer-load]").select("table")) { 
      for (Element row: tablee.select("tr")) { 
       Elements tds = row.select("td"); 
       if (tds.size() > 0) { 
        System.out.println(tds.get(0).text() + ":" + tds.get(1).text()); 
       } 
      } 
     } 
    } 
} 

は、電子メールと電話番号をこすりするには、私が抽出しようとしているhtmlコード(LinkedInのプロファイルから取得)

<table summary="Coordonnées en ligne"> 
    <tr> 
     <th>E-mail</th> 
     <td> 
     <div id="email"> 
      <div id="email-view"> 
       <ul> 
        <li> 
        <a href="mailto:[email protected]">[email protected]</a> 
        </li> 
       </ul> 
      </div> 
     </div> 
     </td> 
    </tr> 
    <tr class="no-contact-info-data"> 
     <th>Messagerie instantanée</th> 
     <td> 
     <div id="im" class="editable-item"> 
     </div> 
     </td> 
    </tr> 
    <tr class="address-book"> 
     <th>Carnet d’adresses</th> 
     <td> 
     <span class="address-book"> 
     <a title="Une nouvelle fenêtre s’ouvrira" class="address-book-edit" href="/editContact?editContact=&contactMemberID=368674763">Ajouter</a> des coordonnées. 
     </span> 
     </td> 
    </tr> 
</table> 
<table summary="Coordonnées"> 
    <tr> 
     <th>Téléphone</th> 
     <td> 
     <div id="phone" class="editable-item"> 
      <div id="phone-view"> 
       <ul> 
        <li>0021653191431&nbsp;(Mobile)</li> 
       </ul> 
      </div> 
     </div> 
     </td> 
    </tr> 
    <tr class="no-contact-info-data"> 
     <th>Adresse</th> 
     <td> 
     <div id="address" class="editable-item"> 
      <div id="address-view"> 
       <ul> 
       </ul> 
      </div> 
     </div> 
     </td> 
    </tr> 
</table> 
+2

? –

+0

はい、私が目指している解決策ではありません。 – AMI

答えて

0

の一例である、要素をターゲットにするCSSセレクタを使用識別子。

String email = doc.select("div#email-view > ul > li > a").attr("href"); 
    System.out.println(email); 

    String phone = doc.select("div#phone-view > ul > li").text(); 
    System.out.println(phone); 

詳細については、CSS Selectorsを参照してください。あなたはLinkedInのは、APIを持っていることを知っている

出力

mailto:[email protected] 
0021653191431 (Mobile) 
+0

このコードを実行してもエラーは発生しませんが、結果は返されません。問題がどこにあるのか分かりません。 – AMI

+0

問題は、ログインしていない限りLinkedInの連絡先情報が利用できないことです。プロファイルに接続するときに、ログインしてCookieを渡す必要があります。ここに例があります:http://stackoverflow.com/questions/31640844/login-to-website-through-jsoup-post-method-not-working –

+0

私はあなたが私に与えた例のように正確にしようとしましたが、何も返さない!奇妙なことは、私は実際にユーザーの経験や教育のような他のデータを取得することができるので、私は問題がクッキーに関連しているとは思わないのですか? – AMI

関連する問題